Usando o aplicativo WSDL personalizado
Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
Para configurar o aplicativo gerador de exemplo da linguagem WSDL personalizado, você tem que executar as seguintes tarefas:
Crie um aplicativo manipulador WSDL personalizado para oferecer suporte à linguagem WSDL específica.
Para concluir a tarefa, consulte Criando o aplicativo WSDL personalizado.
Configure a instalação do SQL Server para registrar e usar o manipulador WSDL personalizado.
Essa tarefa envolve a criação de um script de implantação que executa as seguintes modificações na instalação do SQL Server:
Adiciona o assembly WSDL personalizado (CustomWSDL.dll) ao servidor e o registra para ser usado com a instrução ADD ASSEMBLY.
Cria qualquer procedimento armazenado adicional do qual o aplicativo manipulador WSDL personalizado depende tendo em vista a operação correta.
Cria ou modifica um ponto de extremidade HTTP da instância do SQL Server para que ele use o identificador WSDL personalizado e retorne uma resposta WSDL, e não a resposta WSDL padrão ou simples.
Implantando o manipulador WSDL personalizado
O seguinte procedimento supõe que você esteja conectado como um administrador local em um computador com o SQL Server em execução, ou que seja possível se conectar a ele remotamente com privilégios administrativos.
Parte 1: Configure o servidor
No SQL Server Management Studio, clique em Nova Consulta e se conecte ao servidor.
Copie o seguinte script Transact-SQL para a janela de consulta.
USE master GO -- Drop myWSDL procedure if it exists. IF (SELECT count(*) FROM sysobjects WHERE name = 'myWSDL') = 1 DROP PROCEDURE myWSDL GO -- Drop CustomWSDL assembly if it exists. DROP ASSEMBLY CustomWSDL GO -- 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].GenerateWSDL GO -- 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 InOut GO CREATE PROC InOut @InParam int, @OutParam nvarchar(100) output AS SELECT * FROM syslanguages WHERE langid = @InParam SELECT @OutParam = [name] FROM syslanguages WHERE langid = @InParam PRINT @OutParam SELECT * FROM syslanguages WHERE langid = @InParam FOR XML raw, XMLSCHEMA RETURN 1 GO GRANT 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') = 1 DROP ENDPOINT sql_endpoint GO CREATE ENDPOINT sql_endpoint STATE=STARTED AS 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]
Execute o script.
Parte 2: Testando o manipulador
Para ter certeza de que o manipulador WSDL personalizado esteja funcionando corretamente, tente usar cadeias de caractere da consulta de URL modificadas para solicitar uma WSDL personalizada. Por exemplo, se a instância do SQL Server à qual você está se conectando se chamar MyServer e o script anterior for usado, ele deverá contar com um caminho do ponto de extremidade estabelecido no servidor de sql/WSDL, que responderá usando o identificador WSDL personalizado. Por isso, para testar a conexão com esse ponto de extremidade e fornecer uma solicitação WSDL personalizada, você usaria uma URL como, por exemplo, a seguinte no cliente do navegador da Web HTTP:
http://MyServer/sql/WSDL?wsdlargument
O valor de argument pode ser um dos seguintes identificadores WSDL personalizados que oferecem suporte a cadeias de caractere de cada um dos tipos de cliente e WSDL diferentes.
URL de WSDL personalizada |
Descrição |
---|---|
everett |
Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor do Visual Studio 2003. |
jbuilder |
Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor Borland JBuilder 9.0. |
glue |
Para clientes Web simples desenvolvidos usando ferramentas de desenvolvedor webMethods Cole 5.0.1. |
Como mostrado na seguinte tabela, o valor <argument> retorna uma WSDL simples (todos os tipos nativos XSD) para todas as três opções personalizadas; no entanto, caso queira a WSDL totalmente estendida, você pode acrescentar extended à cadeia de caracteres do argumento de consulta.
Identificador de WSDL simples |
Identificador de WSDL estendida |
---|---|
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 |