What is an HTTP Endpoint in Sql Server? Well, it is a way to
create a usable interface using HTTP or TCP for SOAP, T-Sql, Service
Brokering and a few other things. Iâm just going to tell you,
quick and simple, about creating a web service to return data, although
you can return scalar values, messages and errors too. The
results returned are serialized into Xml. If you have Windows
2003, you donât have to have IIS installed. Sql server will use
the http.sys module in the Win2K3 kernel.
So lets look at creating a usable web service from within Sql Server. Lets start with creating a stored procedure.
Create stored procedure to return list of employeesuse adventureworks go
create procedure dbo.GetEmployees As select e.employeeid, e.title, c.FirstName + â â + c.Lastname As Fullname from HumanResources.employee e inner join person.contact c on e.contactid = c.contactid go
Now, lets create our sql server web service, known as an HTTP ENDPOINT.
The Sql 2005 code to create the HTTP ENDPOINTuse adventureworks go
CREATE ENDPOINT GetEmployees STATE = STARTED AS HTTP ( PATH = '/Employee', AUTHENTICATION = (INTEGRATED), PORTS = (CLEAR), SITE = 'localhost' ) FOR SOAP ( WEBMETHOD 'EmployeeList' (NAME='AdventureWorks.dbo.GetEmployees'), BATCHES = DISABLED, WSDL = DEFAULT, DATABASE = 'AdventureWorks', NAMESPACE = 'http://AdventureWorks/Employee' ) go
There we go. We now have a web service! You
access and use this endpoint the same way you would any other web
service. You can create multiple WEBMETHODs in a single endpoint,
just seperate them with commas in the FOR SOAP statement.
Here are the values you can use for the âSTATEâ argument:
STARTEDâlistening and responding
DISABLEDâneither listening nor responding
STOPPEDâlistening, but returns errors to client requests
Here are the âAS HTTPâ arguments you can use:
Path â The virtual URL path on the server where the Web service will reside
Authentication
INTEGRATED â most secure. It will try to use Kerberos-based authentication if possible (otherwise, NTLM).
DIGEST is not as secure as INTEGRATED. You should use it only if INTEGRATED authentication is not possible.
BASIC authentication is the least secure. You should use it only if
you can't implement either INTEGRATED or DIGEST authentication methods.
BASIC requires SSL as the Port value.
Ports â CLEAR (HTTP - port 80 by default) SSL (HTTPS - port 443 by default)
Site â The name of the server on which the Web service is running
So, now lets put our endpoint to work. First, create a new
windows application project, and add a web reference to it. When
you browse for the web service, it wonât be discovered
automatically. You have to type in the url and click âgoâ.
The url in this case is http://localhost/Employee?wsdl.
Youâll see the EmployeeList method come up in the list, just like using
any other web service. Go ahead and add the service and rename it
to whatever. I called mine âadventureWorksServiceâ.
Now we just add code like using any other webservice. Iâve
added a button to click to populate the listbox on my form. So
here it is:
A VB.net form that loads the results of the stored procedure into a list box.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Create a new instance of the web service
Dim employeesProxy As adventureWorksService.GetEmployees = New adventureWorksService.GetEmployees
' You have to pass in credentials to authenticate yourself to use the service.We are just going to use
'the same credentials we have logged into our computer as.