sql-server – VSCL8部署中的SQL CLR过程默认参数?

前端之家收集整理的这篇文章主要介绍了sql-server – VSCL8部署中的SQL CLR过程默认参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道在数据库中创建过程时我可以为CLR过程定义默认值,如下所示:
CREATE PROCEDURE [dbo].[ShredXml] (
    @InputXml [xml],@AttributeElementHandling [tinyint] = 0,@ConversionHandling [tinyint] = 0,@RootElementName [nvarchar](255) = null
    )
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml]

我无法弄清楚是否有任何方法可以说服Visual Stu@R_403_410@在使用其“部署项目”选项时自动执行此操作…

是否有一个属性可以设置在一个参数上,告诉visual stu@R_403_410@当你在数据库中创建proc时,你想要该参数的默认值是什么?

更新:我已经尝试设置可空性“sqlFacet”,这似乎没有任何效果(这有道理我猜 – afaik存储的proc参数总是可以为空?)

[Microsoft.sqlServer.Server.sqlProcedure]
public static void ShredXml(sqlXml InputXml,[sqlFacet(IsNullable = true)]sqlByte AttributeElementHandling,[sqlFacet(IsNullable = true)]sqlByte ConversionHandling,[sqlFacet(MaxSize = 255,IsNullable = true)]string RootElementName
    )
{
}

解决方法

Is there an attribute one can set on an argument to tell visual stu@R_403_410@ what you want the default value for that argument to be,when it creates the proc in the database?

截至今天,答案是一个响亮的“不”,不幸的是. SSDT不支持很多选项,例如为标量UDF指定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,但到目前为止的官方词是:“好主意,但不会很快发生”.

因此,现在最好的办法是创建一个后部署脚本(在sql Server /用户脚本中找到)并添加其中一个

> ALTER语句(如果使用“Generate DDL”选项),或
> CREATE语句(如果不使用“Generate DDL”选项)

在那里根据需要重新定义存储过程和/或函数属性.后部署脚本将附加到生成的部署脚本的末尾.

我也在努力解决SSDT发布过程中这个漏洞的问题,并允许以编程方式设置这些选项.如果我开始工作,我会用详细信息更新这个答案.

猜你在找的MsSQL相关文章