Olá amigos,

 

Para quem trabalha com dados distribuídos em datacenters, sabe os custos de se manter VPN’s para a comunicação, pois as políticas de acesso de diversos deles bloqueia a porta de conexão do SQLServer para acesso externo por segurança (em principal causado pelo ataque de 2003 que é considerado um dos 10 maiores ataques já feitos).

Por isto, uma opção para liberar o acesso aos dados sem a necessidade da VPN – dentre outras que existe – é a criação de um ENDPOINT direto no SQLServer, sem a necessidade de abrir o Visual Studio nem digitar uma linha de código.

Veja como é simples criar um acesso SOAP a seus dados, que podem ser facilmente consumidos por qualquer aplicação.

CREATE ENDPOINT [ws100loop] 
	AS HTTP 
(
	PATH=N'/ServerIntegration/100loop', 
	PORTS = (CLEAR), 
	AUTHENTICATION = (INTEGRATED), 
	SITE=N'*'
)
FOR SOAP (
	WEBMETHOD 'getDados'(
		NAME=N'[Posts].[Samples].[usp_getDados]', 
		FORMAT=ALL_RESULTS), 
		BATCHES=DISABLED, 
		WSDL=N'[master].[sys].[sp_http_generate_wsdl_defaultcomplexorsimple]'
		)
GO

ou para TSQL (Tabular Data Stream e não T-SQL de Transact SQL, não pode confundir)

CREATE ENDPOINT [ws100loop] 
	AUTHORIZATION [100loop\charles.fortes]
	STATE=STARTED
	AS TCP (LISTENER_PORT = 4022, LISTENER_IP = ALL)
	FOR TSQL ()
GO

Para este exemplo, o nome do EndPoint é ws100loop, o protocolo de transporte usado é o HTTP e a forma de acesso SOAP.

Neste exemplo, o webMethod criado (getDados) retorna os dados de uma Storage procedure (usp_getDados).

Porém, a comunicação por HTTP/SOAP não é mais suportada na versão 2012 do SQLServer, que mantem o suporte apenas ao protocolo TCP para TSQL, Service_Broker e Database_Mirroring.

A última dica que posso dar é a de tomar cuidado na hora de liberar as permissões 😉