- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
既然 C# 支持可选参数,是否有一种方法可以编写 SQL CLR 存储过程,以便从 Visual Studio 发布时使用在 C# 中定义的可选参数在 SQL Server 中创建存储过程?
过去唯一的方法是手动编写包装函数:
Default parameter values/optional parameters for .NET stored procedures in SQL Server 2005
我宁愿避免这种情况,因为它需要编写两次接口(interface),并在情况发生变化时维护两个接口(interface)。
示例:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void help(string FunctionName = "")
{
SqlPipe pipe = SqlContext.Pipe;
pipe.Send("help> " + FunctionName + "<");
}
从 VS2013 发布会产生(在生成的发布脚本中):
CREATE PROCEDURE [dbo].[help] @FunctionName [nvarchar](MAX)
AS EXTERNAL NAME [YOURDB].[StoredProcedures].[help];
运行它:
exec help
Procedure or function 'help' expects parameter '@FunctionName', which was not supplied.
但是,如果您手动编写创建过程:
drop procedure [help]
CREATE PROCEDURE [dbo].[help]
( @FunctionName nvarchar(100) = null)
AS EXTERNAL NAME [YOURDB].[StoredProcedures].[help];
exec help
help> <
....它现在按预期运行。
Visual Studio 拥有将参数发布为可选参数所需的所有信息,因为 C# 支持它们,所以要么我做错了什么,要么他们只是没有更新发布实现以识别可选参数。
最佳答案
目前无法向 SSDT(SQL Server 数据工具)发布进程指示参数的默认值。是的,这令人沮丧,因为它确实需要额外的步骤来解析和“修复”生成的 .sql 脚本,或者添加执行 ALTER {object} 的部署后脚本
语句来添加缺少的详细信息(其中包括其他内容,例如标量函数的 WITH RETURNS NULL ON NULL INPUT
选项非常方便)。
我创建了一个连接建议来解决这个缺陷:SSDT - Support T-SQL parameter defaults for SQLCLR objects via the SqlFacet attribute when generating the publish and create SQL scripts
与指定参数默认值的可能性相关的两个注意事项:
NVARCHAR(MAX)
、VARBINARY(MAX)
和 XML
-- 因为这些数据类型不支持 SQLCLR 对象中的默认值。这是另一个挫折,我已经记录了以下连接建议来解决这个缺陷:Support default parameter values for NVARCHAR(MAX), VARBINARY(MAX), and XML types in SQLCLR objects Optional parameters are defined at the end of the parameter list, after any required parameters. If the caller provides an argument for any one of a succession of optional parameters, it must provide arguments for all preceding optional parameters.
CREATE PROCEDURE
和 CREATE FUNCTION
的其他缺失属性(即 EXECUTE AS
、RETURNS NULL ON NULL INPUT
等),但要使其在 SSDT 发布过程中尽可能无缝地工作有点棘手,因此没有预计何时完成.完成后,我将使用下载链接更新此答案。更新:
最后,手动处理 T-SQL 包装器对象创建可能是最简单的方法。您可以让 Visual Studio 生成程序集和任何必要的数据库设置语句,然后自己执行 CREATE PROCEDURE
、CREATE FUNCTION
等操作:
CREATE
语句。关于c# - SQLCLR 具有可选参数/默认值的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494483/
我正在审查顾问 checkin 的一些代码,并注意到他们正在使用 SQLCLR。我没有任何经验,所以我想我会研究它是关于什么的。我注意到他们使用了 Dim cn As New SqlConnectio
我正在尝试将一些现有的 C# 代码转换为 CLR 存储过程。要使用的明显连接字符串是上下文连接(“context connection = true”)。 我遇到的问题是有些事情显然不适用于这种连接类
我正在尝试创建一个可以在 Sql 中使用的 CLR 哈希函数。 我要做的是计算一行的 md5 校验和 值。如何定义函数的输入应该是一行? 例如,Sql原生的checksum函数以'expression
我的任务是获取客户端收到的电子邮件的“已读回执”,并且这些电子邮件是使用 SQLCLR 存储过程发送的。但我无法弄清楚它是如何完成的。您能否告诉我如何为电子邮件配置已读回执? 最佳答案 我原本以为使用
在 SQL-CLR 程序集中.. 有没有一种方法可以让我加载某些数据并可能从 上的数据库中读取数据仅装配负载 ? 假设我有一类用户定义的函数,这些函数使用一些正则表达式,这些表达式必须根据我在数据库中
以防其他人遇到这个问题。 Error: SQL72014: .Net SqlClient Data Provider: ... CREATE ASSEMBLY for assembly 'Assemb
既然 C# 支持可选参数,是否有一种方法可以编写 SQL CLR 存储过程,以便从 Visual Studio 发布时使用在 C# 中定义的可选参数在 SQL Server 中创建存储过程? 过去唯一
我感觉很疯狂,我决定我真的很想用 Python 编写一个可以在 SQL Server 2008 中运行的用户定义函数。我对此很感兴趣,因为我有几千行 PL/Python 函数为 PostgreSQL
我正在用 C# 构建自定义用户定义类型以用于 SQL CLR。 See this reference . 底层数据可以使用常规带符号的 32 位整数以 4 个字节表示。这是实现: [Serializa
使用 SQL Server 2008、Visual Studio 2005、.net 2.0 SP2(支持新的 SQL Server 2008 数据类型)。 我正在尝试编写一个将 DateTime2
这是我看到的一个新现象,我的数据库名称是:MySQLCLR,有一个脚本总是在其中给出这个名称: :setvar DatabaseName "MySQLCLR" 现在突然间,每次我对我的 sqlclr
根据this线程,F# Core 必须经过 SQLCLR 批准才能将程序集标记为 SAFE。这是有计划的吗?还可以吗? 最佳答案 我相信这是可以做到的。但是,F# 核心库是 Microsoft 的专有
在我们的开发服务器最近重新启动期间,SQL Server 开始使用 .NET 4.0 作为 SQLCLR。这意味着在 SQL 中使用 CLR 没有任何作用,或者至少是我通过阅读这些源代码得到的理解:
我正在尝试调用一个 .net 程序集,它包装了来自 Sql Server 的几个 COM 调用(对第三方 dll)。程序集注册正常(我尝试使用不安全和外部访问注册),但是当我运行该过程时出现此错误:
我正在尝试使用 SQLCLR 从 SQL Server 启动 Windows 程序。调用的过程没有报错,但是程序好像没有启动。 知道我可能做错了什么吗? 这是我的程序的 .NET 代码: using
我们有一个第三方 DLL,它可以对源信息的 DataTable 进行操作并生成一些有用的值,我们正在尝试通过 SQLCLR 将其连接起来,以便在 SQL Server 2008 中作为表值 UDF 进
我在 C# 6.0 .NET 3.5 CLR 程序集中编写了一些安全级别为 external_access 的代码。 精简代码: public static readonly DataTable w
我创建了一个调用如下程序集的触发器: CREATE TRIGGER Testrigger ON STATION FOR INSERT AS EXTERNAL NAME assemblytest.[W
我们有一个带有 SQL Server 2005 后端的 .NET 电子商务应用程序。新订单需要一定的“后处理”。这些任务包括发送电子邮件、创建文件、将文件上传到 FTP 服务器以及针对 WCF 数据服
有一些关于如何在 SQL Server 中使用 F# 和 SQLCLR 的博客文章很有帮助:http://richardminerich.com/2015/12/a-safer-way-to-use-
我是一名优秀的程序员,十分优秀!