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


Открытие доступа к программируемым функциям SQL через Интернет

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

При создании или обновлении конечных точек HTTP SOAP можно выбирать хранимые процедуры, которые будут доступны, как веб-методы. Веб-методы — это существующие хранимые процедуры или пользовательские функции, уже созданные с помощью соответствующих инструкций Transact-SQL, таких как CREATE PROCEDURE для хранимых процедур и CREATE FUNCTION для пользовательских функций, настроенные для доступа к Интернету через конечную точку.

После создания хранимой процедуры или пользовательской функции на сервере можно настроить к ним открытый доступ, как к веб-методам, с помощью инструкций управления конечными точками языка DDL CREATE ENDPOINT и ALTER ENDPOINT.

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

Определяемые пользователем функции, возвращающие табличные значения, не поддерживаются.

Правила именования параметров и ограничения веб-методов

В соответствии с правилами назначения имен SQL Server параметры, используемые хранимыми процедурами и пользовательскими функциями, должны иметь верно форматированные имена. Дополнительные сведения см. в разделах Использование идентификаторов в качестве имен объектов и Указание имени аргумента.

Иногда для имен пользовательских функций и хранимых процедур применяются устаревшие соглашения по именованию, недопустимые при использовании собственных веб-служб с поддержкой XML. Имена параметров, которые допускаются правилами именования параметров SQL Server, однако не допустимы при использовании пользовательской функции или веб-метода, включают следующие:

@

@@

@@this_is_not_a_global

Чтобы обеспечить доступ с помощью собственных веб-служб с поддержкой XML, необходимо изменить эти устаревшие имена параметров в запрашиваемой процедуре или функции, обеспечив использование стандартных имен вида @параметр.

Открытие доступа к системным хранимым процедурам

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

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

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

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

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