Хранимая процедура CLR автоматически шифруется - PullRequest
0 голосов
/ 01 января 2012

Я создал простую процедуру CLR, которая создает папку.Проблема заключается в том, что каждый раз, когда я создаю процедуру внутри SQL Server с помощью оператора «CREATE PROCEDURE ...», процедура автоматически шифруется.Я не использую предложение WITH ENCRYPTION, и я также знаю, что его нельзя использовать для объектов CLR, поэтому я запутался здесь.Вот мой код:

CREATE PROCEDURE CreateFolder(@Path nvarchar(500), @FolderName nvarchar(50), @ReturnCode int output, @ReturnMessage nvarchar(500) output )
WITH EXECUTE AS OWNER 
AS
EXTERNAL NAME MyLibrary.[MyLibrary.StoredProcedures].CreateFolder
GO

Я использую выпуск рабочей группы SQL Server 2008 R2.

This is the screenshot

Любая помощь очень ценится.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 января 2012

Это просто показывает, что оно зашифровано, потому что вы не видите код для него в Management Studio? Вы не можете писать в ALTER или что-либо еще, поэтому вполне вероятно, почему.

1 голос
/ 02 сентября 2015

Объекты SQLCLR не шифруются.Фактически, как отмечено в Вопросе, опция WITH ENCRYPTION даже недоступна для объектов SQLCLR.Причина, по которой они отображаются как зашифрованные в SSMS, заключается не в том, что они не могут увидеть их определение, а в том, что они даже не имеют определения в первую очередь.Если вы посмотрите в sys.sql_modules, вы увидите определения для хранимых процедур, функций, триггеров, представлений и т. Д. Но ни один из них не является объектом SQLCLR.Кроме того, если вы посмотрите на представление каталога sys.parameters , есть поле с именем has_default_value и в соответствии с этой связанной страницей MSDN:

SQL Server поддерживает только значения по умолчаниюдля объектов CLR в этом представлении каталога;поэтому этот столбец имеет значение 0 для объектов Transact-SQL.Чтобы просмотреть значение параметра по умолчанию в объекте Transact-SQL, запросите столбец Definition представления каталога sys.sql_modules или используйте системную функцию OBJECT_DEFINITION.

CREATE операторы для объектов SQLCLR (как показано в вопросе) генерируются из метаданных каждый раз, когда их запрашивают.

...