SQL CLR Процедура Параметр по умолчанию в развертывании VS2008? - PullRequest
8 голосов
/ 21 июня 2011

Я знаю, что могу определить значения по умолчанию для процедур 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, каким должно быть значение по умолчанию для этого аргумента при создании процедуры в базе данных?

Обновление: я пытался установить обнуляемость "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
    )
{
}

Ответы [ 2 ]

1 голос
/ 28 августа 2015

Существует ли атрибут, который можно установить в аргументе, чтобы сообщить Visual Studio, каким должно быть значение по умолчанию для этого аргумента при создании процедуры в базе данных?

На сегодняшний день ответом, к сожалению, является громкое «нет». SSDT не поддерживает довольно много опций, таких как указание WITH RETURNS NULL ON NULL INPUT для скалярных UDF и т. Д.

Я открыл предложение Connect для поддержки параметров по умолчанию, SSDT - Поддержка параметров по умолчанию T-SQL для объектов SQLCLR с помощью атрибута SqlFacet при генерации публикации и создании сценариев SQL , но пока что является официальным словом это: "отличная идея, но не произойдет в ближайшее время".

Так что на данный момент лучше всего создать сценарий после развертывания (находится в SQL Server / сценарии пользователя) и добавить либо

  • ALTER операторов (если используется опция «Создать DDL») или
  • CREATE операторов (если не используется опция «Создать DDL»)

для переопределения свойств хранимой процедуры и / или функции по желанию. Сценарий после развертывания добавляется в конец созданного сценария развертывания.

Я также работаю над тем, что, я надеюсь, устранит эту пробел в процессе публикации SSDT и позволит программно установить эти параметры. Если мне это удастся, я дополню этот ответ деталями.

0 голосов
/ 14 июля 2011

Вы можете определить значения по умолчанию в функции.Они будут использоваться, когда значение null передается из основной обертки на стороне SQL.Просто объявите параметры процедуры без значений по умолчанию и установите значения по умолчанию для функции.Все должно быть в порядке.

...