Un po’ di tempo fa, non ricordo dove (forse proprio qui sui blogs di UGI) ho letto della possibilità di creare un web service direttamente da SQL Server 2005/2008, esponendo una stored procedure come endpoint, non ricordo l’autore dell'articolo, ma mi ero segnato uno dei link presenti nell’articolo originale (http://msdn.microsoft.com/it-it/library/cc185116.aspx) che spiegava come farlo.
In questi giorni ho avuto la necessità di creare “al volo” un paio di web service per dei test, quindi, quale miglior modo che provare a farli direttamente da SLQ Server?
Quindi andiamo per ordine…
1 - Creare le stored procedure che si vogliono esporre.
2 - Esporle:
CREATE ENDPOINT myTestSQLEndpoint
STATE = STARTED
AS HTTP
(
PATH = '/test',
AUTHENTICATION = (INTEGRATED), CLEAR_PORT = 8080,
PORTS = (CLEAR),
SITE = 'localhost'
)
FOR SOAP
(
WEBMETHOD 'Execute1' (name='sp_MyExposedStoredProcedure1', SCHEMA=STANDARD )
WEBMETHOD 'Execute2' (name='sp_MyExposedStoredProcedure2', SCHEMA=STANDARD )
WSDL = DEFAULT,
SCHEMA = STANDARD,
DATABASE = 'mydatabase',
NAMESPACE = 'http://www.mynamespace.org/'
);
GO
Riporto parte dell’articolo presente su msdn che spiega il significato delle varie istruzioni:
La prima parte dell’istruzione “.. AS HTTP …” definisce tutte le informazioni relative al protocollo di trasmissione, l’eventuale porta di comunicazione e la modalità di autenticazione.
PATH: l’URL virtuale dove risiederà il nostro web service.
PORTS: specifica l’utilizzo del protocollo HTTP su porta 80 di default, piuttosto che HTTPS (SSL, con porta 443 di default).
SITE: il nome del server dove il nostro WS sta girando.
La seconda parte “… FOR SOAP…” definisce i metodi che saranno resi disponibili all’esterno, la tipologia di WSDL, il database di utilizzo.
Da ricordare che le istruzioni sugli oggetti ENDPOINT possono essere compiute solo da:
- Membri appartenenti al ruolo sysadmin
- Proprietari degli ENDPOINT
- Utenti ( gruppi) a cui è stato concesso il CONNECT sull’ENDPOINT