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


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

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

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

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

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

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

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

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

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

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

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

См. также

Другие ресурсы

Adding an Extended Stored Procedure to SQL Server
Creating Extended Stored Procedures
Introduction to Common Language Runtime (CLR) Integration

Справка и поддержка

Получение помощи по SQL Server 2005