/ / SQL CLR Procedure Parâmetro padrão na implantação do VS2008? - sql-server, visual-studio-2008, implantação, sqlclr, ssdt

Parâmetro Padrão do Procedimento SQL CLR na implantação do VS2008? - sql-server, visual-studio-2008, implantação, sqlclr, ssdt

Eu sei que posso definir valores padrão para procedimentos CLR ao criar o procedimento no banco de dados, assim:

CREATE PROCEDURE [dbo].[ShredXml] (
@InputXml [xml],
@AttributeElementHandling [tinyint] = 0,
@ConversionHandling [tinyint] = 0,
@RootElementName [nvarchar](255) = null
)
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml]

O que não consigo descobrir é se existe alguma maneira de convencer o Visual Studio a fazer isso automaticamente ao usar a opção "Implantar projeto" ...

Existe um atributo que pode ser definido em um argumento para informar ao visual studio qual o valor padrão para esse argumento quando ele cria o proc no banco de dados?

Atualização: Eu tentei definir a capacidade de nulidade "SqlFacet", que parecia não ter efeito (o que faz sentido, eu acho - os parâmetros de proc armazenados sempre são anuláveis?)

[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
)
{
}

Respostas:

1 para resposta № 1

Existe um atributo que pode ser definido em um argumento para informar ao visual studio qual o valor padrão para esse argumento quando ele cria o proc no banco de dados?

Hoje, a resposta é um retumbante "não", infelizmente. O SSDT não suporta várias opções, como especificar WITH RETURNS NULL ON NULL INPUT para UDFs escalares etc.

Abri uma sugestão de conexão para dar suporte a padrões de parâmetros, SSDT - Suporte aos padrões do parâmetro T-SQL para objetos SQLCLR por meio do atributo SqlFacet ao gerar os scripts SQL de publicação e criação, mas a palavra oficial até agora é: "ótima idéia, mas não vai acontecer tão cedo".

Portanto, por enquanto, sua melhor aposta é criar um script pós-implantação (encontrado em SQL Server / User Scripts) e adicionar

  • ALTER instruções (se estiver usando a opção "Gerar DDL") ou
  • CREATE instruções (se não estiver usando a opção "Gerar DDL")

para redefinir as propriedades Stored Procedure e / ou Function conforme desejado. O script pós-implantação é anexado ao final do script de implantação gerado.

Eu também estou trabalhando em algo que iráesperamos corrigir esse buraco no processo de publicação do SSDT e permitir definir programaticamente essas opções. Se funcionar, atualizarei esta resposta com os detalhes.


0 para resposta № 2

Você pode definir os valores padrão na função. Eles serão usados ​​quando nulo for passado do wrapper do lado do SQL subjacente. Apenas declare os parâmetros do procedimento sem padrões e coloque os padrões na função. Deve estar tudo bem.