[转]SQL Server 2005 实现存储过程作为Webservice发布

参考:http://www.dfwlt.com/forum.php?mod=viewthread&tid=424

介绍
在这篇文章中,我将解释我们如何发布SQL Server 2005的存储过程作为Web服务,并从微软VB.NET Windows应用程序访问该Web服务。

背景
微软开始为SQL Server实现对XML的支持,需要从SQL Server 2000版本的开始。 SQL Server 2000的最初版本附带了许多XML功能。后来,微软发布SQLXML 3.0为SQL存储过程和SQL函数以及web服务。

我们不再需要SQLXML 3.0 ,因为SQL Server 2005的版本本身支持这个。

如何发布您的存储过程作为一个web服务?

发布您的存储过程作为Web服务是很容易的,步骤很简单。

首先我们创建一个存储过程GetProducts,

  1. Create PROC GetProduct
    (
    @ProductId int
    )
    As
    Select * from 
    Products 
    where
    ProductId =@ProductId



在接下来的步骤中,我们将看到我们如何可以将GetProduct作为一个web服务。我们将使用CREATE ENDPOINT TSQL语句来实现。Endpoint是代表一个服务器端和客户端,或通过它的SQL Server与外部通信对象通信。 

SQL Server 2005中存在几种访问协议(TCP / IP,共享内存,命名管道,VIA),创建Endpoint可以使用下面的任何一种协议。 HTTP的Endpoint类型将启用SQL Server提供web服务的支持。 

要发布我们的存储过程作为web服务,我们将创建一个HTTP的Endpoint来将存储过程发布为Web。

  1. CREATE ENDPOINT WebServiceTest
    AUTHORIZATION [sa]
    STATE = STARTED
    AS HTTP
    (
    AUTHENTICATION = (INTEGRATED),
    PATH = '/MyTestWebservicepath/',
    PORTS = (CLEAR),
    CLEAR_PORT = 8045,
    SITE = '*',
    )
    FOR SOAP
    (
    WEBMETHOD 'urn:www.codeproject.com'.'GetProduct'
    (
    NAME = 'Northwind.dbo.GetProduct',
    SCHEMA = STANDARD,
    FORMAT = ALL_RESULTS
    ),
    WSDL = DEFAULT,
    BATCHES = DISABLED,
    SCHEMA = STANDARD,
    LOGIN_TYPE = WINDOWS,
    SESSION_TIMEOUT = 100,
    DATABASE = 'Northwind',
    NAMESPACE = 'www.codeproject.com',
    CHARACTER_SET = XML
    )


您可以添加任意数量的存储过程的HTTP的Endpoint。 


以下语法是添加新的存储过程作为Web方法到现有的Endpoint:

ALTER ENDPOINT sql_endpoint FOR SOAP 
(ADD WEBMETHOD 'YourWebMethod' (name='Northwind.dbo.YourWebMethod'));


下面的脚本可以供大家参考,是创建Endpoint的语法

CREATE ENDPOINT Name-Of-The-Endpoint 
[AUTHORIZATION login information to sqlserver   ]
STATE = { STARTED | STOPPED | DISABLED }
AS HTTP
(
PATH = 'PATH-TO-ACCES-WEBSERVICE-(YOUR SERVER NAMEPATH WILL BE THE ACTUAL URL)', 
AUTHENTICATION =( { BASIC | DIGEST | INTEGRATED | NTLM | KERBEROS } [ ,...n ] ), 
PORTS = ( { CLEAR | SSL} [ ,... n ] )
[ SITE = {'*' | '+' | 'WEBSITE' },]
[, CLEAR_PORT = CLEARPORT ]
[, SSL_PORT = SSLPORT ]
[, AUTH_REALM = { 'REALM' | NONE } ]
[, DEFAULT_LOGON_DOMAIN = { 'DOMAIN' | NONE } ]
[, RESTRICT_IP = { NONE | ALL } ]
[, COMPRESSION = { ENABLED | DISABLED } ]
[, EXCEPT_IP = (ALL | ( 4-part-ip ) | ( "ip_address_v6" ) )
)
FOR SOAP
(
[ { WEBMETHOD [ NAMESPACE.] 'method_alias'
( NAME = 'database.Schema.name'
[ , SCHEMA = { NONE | STANDARD | DEFAULT } ]
[ , FORMAT = { ALL_RESULTS | ROWSETS_ONLY } ]
) 
} [ ,...n ] ]
[ BATCHES = { ENABLED | DISABLED } ]
[ , WSDL = { NONE | DEFAULT | 'PROCEDURE NAME' } ]
[ , SESSIONS = { ENABLED | DISABLED } ]
[ , LOGIN_TYPE = { MIXED | WINDOWS } ]
[ , SESSION_TIMEOUT = TIME-INRTERVEL | NEVER ]
[ , DATABASE = { 'DATABASE-NAME' | DEFAULT }
[ , NAMESPACE = { 'namespace' | DEFAULT } ]
[ , SCHEMA = { NONE | STANDARD } ]
[ , CHARACTER_SET = { SQL | XML }]
[ , MAX_SOAP_HEADERS_SIZE = { int | DEFAULT }]
)


创建好后,我们的WSDL地址是:http://localhost:8045/
MyTestWebservicepath.wsdl。

PATH = '/MyTestWebservicepath/',
PORTS = (CLEAR),
CLEAR_PORT = 8045,


这个就是webservice的名称和端口。



如果调用这个WebService就不讲了,如果对WebService访问有问题的,可以到网络上去查询。

立刻行动,坚持不懈,不断学习!
原文地址:https://www.cnblogs.com/deng779256146/p/9101282.html