gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:51:30 24 4
gpt4 key购买 nike

我知道在数据库中创建过程时可以为 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 在数据库中创建过程时,是否可以在参数上设置一个属性来告诉 Visual Studio 您希望该参数的默认值是什么?

更新:我尝试设置可空性“SqlFacet”,这似乎没有效果(我猜这是有道理的 - afaik 存储过程参数总是可以为空?)

[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 studio 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 语句(如果使用“生成 DDL”选项),或
  • CREATE 语句(如果不使用“生成 DDL”选项)

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

我还在研究一些东西,希望能够修复 SSDT 发布过程中的这个漏洞,并允许以编程方式设置这些选项。如果我成功了,我会用详细信息更新这个答案。

关于sql-server - VS2008部署中的SQL CLR过程默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6421014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com