Как я могу скопировать сборку между базами данных?
Пока я не вижу, как это проблема SQLCLR. Вы явно скопировали сборку и объект-обертку T- SQL, иначе вы получите ошибки T- SQL вместо. NET error.
Я нажал на сборку сценария как create и создали его в новой базе данных.
Учитывая, что вы запрограммировали объект-обертку T- SQL и , вы получаете ошибку, связанную с входным параметром, вы возможно, возникла ошибка, из-за которой значения по умолчанию для параметров NVARCHAR
не были правильно написаны в сценарии:
Сценарии SSMS хранимая процедура CLR Параметр NVARCHAR по умолчанию NULL как N '' (пустая строка)
Выполните следующее в старых и новых БД, чтобы убедиться, что все определения параметров одинаковы, включая любые потенциальные значения по умолчанию (обращая пристальное внимание на строки, которые имеют 1
для [has_default_value]
):
SELECT [name], [user_type_id], [max_length], [is_output],
[has_default_value], [default_value]
FROM sys.parameters prm
WHERE prm.[object_id] = OBJECT_ID(N'dbo.ObjectName')
ORDER BY prm.[parameter_id];
Если вы обнаружите какие-либо различия, вам необходимо обновить ваш оператор CREATE
, чтобы включить в него правильные значения по умолчанию. Например, если у вас есть:
@SomeParam [nvarchar](1 - 4000) = N``
Затем вам нужно будет обновить эту часть вашего сценария T- SQL, указав вместо этого:
@SomeParam [nvarchar](1 - 4000) = NULL
, а затем перезапустите CREATE
(вам может понадобиться сначала DROP
существующий объект-обертка T- SQL, или изменить CREATE
на ALTER
).
Пожалуйста голосовать за отчет об ошибке обратной связи, который я связал выше. Спасибо!
Для получения дополнительной информации о работе с SQLCLR в целом посетите: SQLCLR Info