Расширенные хранимые процедуры
Важно! |
---|
В будущей версии 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.
См. также