I would like to know how to use a web service from a SQL Server stored procedure. I have a table in which the columns specify the city and state of the user. I want to pass
For something like this, you don't need a full web service implementation. You can use SQLCLR (SQL Server's .NET Integration) to submit the request to the URL, get the response back in XML (unless you can find a JSON library that will work without being set to UNSAFE
), and then parse that response.
Look at the following MSDN pages:
According to the Google Geocoding API documentation, the API URI should be formatted similarly to the following:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Just submit that with those 2 variables substituted with their proper values via HttpWebRequest
, then call HttpWebRequest.GetResponse
, then call HttpWebResponse.GetResponseStream
. And do not forget to call the Close
and Dispose
methods of HttpWebResponse
(or instantiate it in a using
block)!!
Additional notes:
TRUSTWORTHY ON
. Just sign the assembly with a password, then create an asymmetric key in the master
database by pointing to your signed DLL, then create a login from that asymmetric key, and finally grant that login the UNSAFE ASSEMBLY
permission. Then you can set the assembly WITH PERMISSION_SET = EXTERNAL_ACCESS
.Omar Frometa has an example on how to do this. go this link http://www.codeproject.com/Articles/428200/How-to-invoke-a-Web-Service-from-a-Stored-Procedur
In summary, use these extended stored procedures: SP_OACreate and SP_OAMethod to access objects such as MSXML2.ServerXMLHttp.