Tao*_*Tao 8 sql-server deployment sqlclr visual-studio-2008 sql-server-data-tools
我知道在数据库中创建过程时我可以为CLR过程定义默认值,如下所示:
CREATE PROCEDURE [dbo].[ShredXml] (
@InputXml [xml],
@AttributeElementHandling [tinyint] = 0,
@ConversionHandling [tinyint] = 0,
@RootElementName [nvarchar](255) = null
)
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml]
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚是否有任何方法可以说服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
)
{
}
Run Code Online (Sandbox Code Playgroud)
当 Visual Studio 在数据库中创建过程时,是否可以在参数上设置一个属性来告诉 Visual Studio 您希望该参数的默认值是什么?
不幸的是,截至今天,答案是响亮的“不”。SSDT 不支持很多选项,例如指定WITH RETURNS NULL ON NULL INPUT标量 UDF 等。
我打开了一个连接建议来支持参数默认值,SSDT - 在生成发布和创建 SQL 脚本时通过 SqlFacet 属性支持 SQLCLR 对象的 T-SQL 参数默认值,但到目前为止的官方说法是:“好主意,但不会很快就会发生”。
因此,目前您最好的选择是创建一个部署后脚本(在 SQL Server/用户脚本中找到)并添加
ALTER语句(如果使用“生成 DDL”选项),或者CREATE语句(如果不使用“生成 DDL”选项)根据需要重新定义存储过程和/或函数属性。部署后脚本将附加到生成的部署脚本的末尾。
我还在致力于解决 SSDT 发布过程中的这个漏洞,并允许以编程方式设置这些选项。如果我让它工作,我会用详细信息更新这个答案。
| 归档时间: |
|
| 查看次数: |
1562 次 |
| 最近记录: |