Правила и ограничения собственных веб-служб с поддержкой XML
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
Следующие правила и ограничения применяются к запросам собственных веб-служб с поддержкой XML.
Если безымянный сеанс SOAP (безымянные сеансы SOAP существуют на протяжении только одного запроса) запрашивает уведомления о транзакции и включает инструкцию BEGIN TRANSACTION, но не инструкции COMMIT TRANSACTION или ROLLBACK TRANSACTION, то сервер выполняет откат транзакции, но не включает в ответ SOAP узел уведомления об откате транзакции.
Поддержка для собственных веб-служб с поддержкой XML доступна только на экземплярах SQL Server, запущенных на операционной системе Windows, которая поддерживает HTTP API-интерфейс (Http.sys). Если производится попытка развернуть собственные веб-службы с поддержкой XML на экземпляре SQL Server, который не соответствует этому требованию к операционной системе и не поддерживает Http.sys, операции языка определения данных не будут выполняться, и собственного прослушивания не произойдет.
Если экземпляр SQL Server запущен в Windows XP Professional, то попытка создать конечные точки может завершиться неуспешно. Например, если запущена служба IIS, то попытка выполнения инструкции CREATE ENDPOINT завершается неудачно, возвращая такую ошибку: «Произошла ошибка ('0x80070020') при попытке регистрации конечной точки 'endpointName'.»
Эта ошибка указывает на конфликт процессов между экземпляром SQL Server и службами IIS, так как IIS в Windows XP прослушивает порт 80. Чтобы обойти эту проблему, нужно сделать следующее.
Остановите службу World Wide Web.
Выполните инструкцию CREATE ENDPOINT еще раз, используя номер порта, отличный от 80.
Можно настроить конечные точки на использование нескольких портов, но нельзя указать два порта одного и того же типа. Например, можно указать один чистый порт и один порт SSL, но нельзя указать два чистых порта или два порта SSL.
Табличные пользовательские функции не поддерживаются.
SOAP не поддерживает использование расширенных хранимых процедур в качестве веб-методов.
Нельзя отключать конечные точки, соединение с которыми осуществляется не по протоколу HTTP (состояние disabled могут иметь только конечные точки HTTP).
Хотя указание SOAP явно делает невозможным использование инструкций по обработке XML в запросах и откликах SOAP, в SQL Server данное ограничение не является строгим. Если инструкции по обработке (PI) присутствуют в заголовке запроса SOAP, сервер их не учитывает. Если инструкции PI встречаются в содержимом параметров XML, они сохраняются как часть XML-данных. Отклики SOAP не должны содержать инструкции по обработке, если только они не являются частью извлеченного параметра XML. Вследствие такого поведения клиентские приложения SOAP могут не принять экземпляр значения строки типа данных xml, которые содержит PI, или приложения могут вырезать PI, которые содержатся в типизированном XML, возвращаемом SQL Server. Если данный сценарий является важным, можно создать веб-службы, которые преобразуют любой из типов данных xml в типы NVarChar или VarBinary перед тем как служба отправляет их обратно клиентам SOAP.
Для улучшения взаимодействия с Visual Studio 2005 следует убедиться, что любые пространства имен, используемые в веб-методах конечной точки, отличаются от пространств имен, используемых со схемами типа данных xml, которые также используются на конечной точке.
Результаты WSDL, возвращаемые конечной точкой, могут включать XSD-схему, которая не является правильной, например если одно пространство имен импортируется более одного раза в любом из следующих сценариев.
Конечная точка содержит несколько параметров типа XML, которые ссылаются на разные коллекции схем, каждая из которых определяет одно и то же пространство имен.
Конечная точка содержит параметр типа XML, который ссылается на URI пространства имен, предопределенного для использования с собственными веб-службами с поддержкой XML в SQL Server. Заранее определенные URI пространства имен, где может быть применен данный сценарий, включают перечисленные в следующей таблице.
Префикс
URI пространства имен
sql
https://schemas.microsoft.com/sqlserver/2004/SOAP
sqloptions
https://schemas.microsoft.com/sqlserver/2004/SOAP/Options
sqlsoaptypes
https://schemas.microsoft.com/sqlserver/2004/SOAP/types
sqlmessage
https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlMessage
sqlparameter
https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlParameter
sqlresultstream
https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlResultStream
sqlrowcount
https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlRowCount
sqltransaction
https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlTransaction
sqltypes
https://schemas.microsoft.com/sqlserver/2004/sqltypes
xml
http://www.w3.org/XML/1998/namespace
xsd
http://www.w3.org/2001/XMLSchema
xsi
http://www.w3.org/2001/XMLSchema-instance
См. также