Что такое хранимая процедура со значком замка в SQL Server 2005? - PullRequest
11 голосов
/ 22 июня 2009

В одной базе данных, которой я управляю, я вижу несколько хранимых процедур, у которых есть значок обычной хранимой процедуры, но рядом с ними есть маленький замок. Различия, которые я вижу, состоят в том, что я не могу «изменить» их, и если я пытаюсь написать их, он говорит:

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

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

Ответы [ 5 ]

14 голосов
/ 22 июня 2009

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

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

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

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

Редактировать: Здесь еще один, но я не проверял его на SQL Server 2005 или более поздней версии.

4 голосов
/ 22 июня 2009

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

3 голосов
/ 22 июня 2009

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

1 голос
/ 23 февраля 2012

SP, на которую вы смотрите, это CLR типа SP. Я только что сделал POC, который был успешным. Вам нужно только перейти по этой ссылке:

http://www.codeproject.com/Articles/37298/CLR-Stored-Procedure-and-Creating-It-Step-by-Step

0 голосов
/ 22 июня 2009

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

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

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

...