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发布过程中这个漏洞的问题,并允许以编程方式设置这些选项.如果我开始工作,我会用详细信息更新这个答案.