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 Studio在使用其“部署项目”选项时自动执行此操作… 是否有一个属性可以设置在一个参数上,告诉visual studio当你在数据库中创建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 ) { } 解决方法
截至今天,答案是一个响亮的“不”,不幸的是. 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”选项),或 在那里根据需要重新定义存储过程和/或函数属性.后部署脚本将附加到生成的部署脚本的末尾. 我也在努力解决SSDT发布过程中这个漏洞的问题,并允许以编程方式设置这些选项.如果我开始工作,我会用详细信息更新这个答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |