Что такое хранимая процедура с пиктограммой в SQL Server 2005?

Я вижу несколько хранимых процедур в одной базе данных, которую я управляю, у которой есть значок обычной хранимой процедуры, но с небольшим замком рядом с ними.
Различия, которые я вижу, это то, что я не могу их "модифицировать", и если я попытаюсь выполнить script их, он скажет:

Текст зашифрован.

Это потому, что это хранимые процедуры CLR?
Являются ли они "регулярными" процедурами, но как-то зашифрованы/защищены?
Есть ли какой-нибудь способ получить код из них (либо T-SQL, либо IL)?

Ответ 1

Замок означает, что хранимая процедура была зашифрована с помощью подсказки WITH ENCRYPTION (см. CREATE PROC в BOL для получения дополнительной информации).

Это не означает, что это хранимая процедура CLR.

Вот статья журнала SQL Server о том, как расшифровать объекты, которые зашифрованы с помощью подсказки WITH ENCRYPTION.

Существуют также сторонние инструменты, которые делают то же самое - встроенное шифрование sproc не должно быть сильным уровнем шифрования.

Изменить: Здесь другое, но я не тестировал его на SQL Server 2005 или новее.

Ответ 2

Замок просто означает, что они зашифрованы - не имеет ничего общего с CLR. Невозможно просмотреть источник независимо от того, является ли он CLR/T-SQL.

Ответ 3

Также как и зашифрованный, это также означает, что у вас нет прав VIEW DEFINITION, поэтому вы не можете видеть код хранимой процедуры.

Ответ 5

Это хранимые процедуры, созданные с помощью опции WITH ENCRYPTION (дополнительную информацию см. в Документация MSDN для CREATE PROCEDURE). Все это означает, что вы не видите код хранимой процедуры.

Можно расшифровать такие хранимые процедуры, но поскольку идея шифрования заключается в том, что вы не можете сделать это не просто - определенно не делайте этого на производственных серверах! Если вам действительно нужно увидеть текст хранимой процедуры, тогда вам лучше спросить людей, которые сначала написали его для незашифрованной версии (вы можете хотя бы попробовать).

Побочным эффектом зашифрованных хранимых процедур является невозможность просмотра планов выполнения для этих объектов (либо кэшированных планов выполнения через DMV, либо планов выполнения, захваченных посредством профилирования)