Расширенные хранимые процедуры
![]() |
---|
В будущей версии 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.
См. также
Другие ресурсы
Adding an Extended Stored Procedure to SQL Server
Creating Extended Stored Procedures
Introduction to Common Language Runtime (CLR) Integration