Поделиться через


Расширенные хранимые процедуры

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Вместо этого используйте интеграцию со средой CLR.

Расширенные хранимые процедуры позволяют создавать собственные внешние подпрограммы на языках программирования, подобных C. Расширенные хранимые процедуры представляются пользователям как обычные хранимые процедуры и выполняются тем же способом. Расширенным хранимым процедурам могут передаваться аргументы, и расширенные хранимые процедуры могут возвращать результаты и статус.

Расширенные хранимые процедуры являются файлами DLL, которые экземпляр SQL Server может динамически подгружать и выполнять. Расширенные хранимые процедуры выполняются непосредственно в адресном пространстве экземпляра SQL Server и программируются с использованием SQL Server Extended Stored Procedure API.

ПримечаниеПримечание

Расширенные хранимые процедуры не могут быть использованы для создания экземпляра среды CLR Microsoft .NET Framework и выполнения управляемого кода. Этот сценарий не будет поддерживаться в следующих версиях SQL Server. Интеграция со средой CLR более надежна и безопасна, чем использование расширенных хранимых процедур.

После написания расширенной хранимой процедуры члены предопределенной роли сервера sysadmin могут зарегистрировать ее в экземпляре SQL Server, а затем предоставить другим пользователям разрешение на выполнение этой процедуры. Расширенные хранимые процедуры могут быть добавлены только в базу данных master.

ПримечаниеПримечание

Расширенные хранимые процедуры могут служить причиной утечек памяти или других проблем, уменьшающих производительность и надежность сервера. Целесообразно хранить расширенные хранимые процедуры в экземпляре SQL Server, отдельном от экземпляра, содержащего данные, на которые они ссылаются. Также следует рассмотреть возможность использования распределенных запросов для получения доступа к базе данных. Дополнительные сведения см. в разделе Распределенные запросы.

Безопасность

Прежде чем добавить расширенные хранимые процедуры к серверу и предоставить разрешение на их выполнение другим пользователям, системный администратор должен тщательно проверить каждую хранимую процедуру, чтобы убедиться, что она не содержит вредоносного или злонамеренного кода.

Рекомендации по дополнительной безопасности включают в себя следующее.

  • Выполнять проверку вводимых данных всех пользователей.

  • Не осуществлять объединение пользовательских входных данных перед их подтверждением.

  • Никогда не выполнять команду, построенную из неподтвержденных пользовательских входных данных. Дополнительные сведения см. в разделе Атака SQL Injection.