Использование приложения на пользовательском языке WSDL
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.
Чтобы установить образец приложения генератора пользовательского языка WSDL, необходимо выполнить следующие задачи:
Создать приложение обработчика пользовательского языка WSDL для поддержки конкретного языка WSDL.
Чтобы завершить эту задачу, см. раздел Приложение, формирующее пользовательский WSDL-документ.
Настройте установку SQL Server, чтобы зарегистрировать и использовать обработчик пользовательского языка WSDL.
Эта задача включает создание сценария развертывания, который выполняет следующие изменения установки SQL Server:
Добавляет сборку пользовательского языка WSDL (CustomWSDL.dll) на сервер и регистрирует ее для использования с инструкцией ADD ASSEMBLY.
Создает любые дополнительные хранимые процедуры, от которых зависит правильная работа приложения обработчика пользовательского языка WSDL.
Создает или изменяет конечную точку HTTP на экземпляре SQL Server так, чтобы она использовала обработчик пользовательского языка WSDL и возвращала ответ на пользовательском языке WSDL, вместо ответа на языке WSDL по умолчанию или простом языке WSDL.
Развертывание обработчика пользовательского языка WSDL
Следующая процедура предполагает, что вход в систему выполнен под учетной записью локального администратора на компьютер, на котором работает SQL Server, или существует возможность подключиться к нему удаленно с административными правами доступа.
Часть 1. Настройка сервера
В среде SQL Server Management Studio щелкните Создать запрос и подключитесь к серверу.
Скопируйте следующий сценарий на языке Transact-SQL в окно запроса.
USE master GO-- Drop myWSDL procedure if it exists.IF (SELECT count(*) FROM sysobjects WHERE name = 'myWSDL') = 1 DROP PROCEDURE myWSDLGO-- Drop CustomWSDL assembly if it exists.DROP ASSEMBLY CustomWSDLGO-- Update the path to the compiled assembly as necessary.CREATE ASSEMBLY CustomWSDL FROM 'C:\temp\CustomWSDL.dll'GO -- Create a stored procedure to map to the common lanugage-- runtime (CLR) method As with any other SQL Server stored procedure-- that maps to a CLR method, the actual stored procedure name -- ('myWSDL') can be arbitrarily specified.CREATE PROCEDURE myWSDL(@endpointID as int,@isSSL as bit,@host as nvarchar(256),@queryString as nvarchar(256),@userAgent as nvarchar(256))AS EXTERNAL NAME CustomWSDL.[MSSql.CustomWSDL].GenerateWSDLGO-- Follow the security guidelines set up for your environment.-- The following example is meant to be used for development or -- testing purposes only.GRANT EXEC on myWSDL to [PUBLIC]GO-- The following is a sample stored procedure (InOut) that-- demonstrates the configuration of an HTTP endpoint. -- If the InOut stored procedure already exists, it is dropped.IF (SELECT count(*) FROM sysobjects WHERE name = 'InOut') = 1 DROP PROC InOutGOCREATE PROC InOut @InParam int, @OutParam nvarchar(100) outputASSELECT * FROM syslanguages WHERE langid = @InParamSELECT @OutParam = [name] FROM syslanguages WHERE langid = @InParamPRINT @OutParamSELECT * FROM syslanguages WHERE langid = @InParam FOR XML raw, XMLSCHEMARETURN 1GOGRANT EXEC on InOut to [PUBLIC]-- The following creates a sample HTTP endpoint to demonstrate -- the endpoint setup. If the sample endpoint already exists, it-- is first dropped.IF (SELECT count(*) FROM [msdb].sys.http_endpoints WHERE name = 'sql_endpoint') = 1DROP ENDPOINT sql_endpointGOCREATE ENDPOINT sql_endpoint STATE=STARTEDAS HTTP ( SITE='*', PATH='/sql/WSDL', PORTS=(CLEAR), CLEAR_PORT=80, AUTHENTICATION=(DIGEST, INTEGRATED))FOR SOAP( WEBMETHOD 'http://myNS.com/'.'InOut' ( NAME='master.dbo.InOut' ), DATABASE = 'master', WSDL='master.dbo.myWSDL', Batches=enabled, SCHEMA = STANDARD)GRANT CONNECT ON ENDPOINT::sql_endpoint to [PUBLIC]
Выполните сценарий.
Часть 2. Проверка обработчика
Чтобы убедиться, что обработчик пользовательского языка WSDL работает правильно, попробуйте использовать измененные строки запроса URL для запроса на пользовательском языке WSDL. Например, если экземпляр SQL Server, с которым установлено соединение, назван MyServer и используется предыдущий сценарий, он должен иметь путь конечной точки, установленной на сервере sql/WSDL, который ответит с помощью обработчика пользовательского языка WSDL. Поэтому, чтобы проверить соединение с этой конечной точкой и предоставить запрос на пользовательском языке WSDL, в клиенте HTTP веб-обозревателя необходимо использовать URL-адрес следующего типа:
http://MyServer/sql/WSDL?wsdlargument
Значение параметра argument может быть любым из следующих идентификаторов пользовательского языка WSDL, которые поддерживают строки для каждого клиента и типа языка WSDL.
URL-адрес пользовательского языка WSDL |
Описание |
---|---|
everett |
Для простых веб-клиентов, разработанных с помощью средств разработчика Visual Studio 2003. |
jbuilder |
Для простых веб-клиентов, разработанных с помощью средств разработчика Borland JBuilder 9.0. |
glue |
Для простых веб-клиентов, разработанных с помощью средств разработчика webMethods Glue 5.0.1. |
Как показано в следующей таблице, значение <argument> возвращает простой язык WSDL (все собственные типы XSD) при всех трех значениях; однако, если необходимо получить полностью расширенный язык WSDL, можно добавить extended к строке параметра запроса.
Простой идентификатор WSDL |
Расширенный идентификатор WSDL |
---|---|
http://MyServer/sql/WSDL?wsdleverett |
http://MyServer/sql/WSDL?wsdleverettextended |
http://MyServer/sql/WSDL?wsdljbuilder |
http://MyServer/sql/WSDL?wsdljbuilderextended |
http://MyServer/sql/WSDL?wsdlglue |
http://MyServer/sql/WSDL?wsdlglueextended |