zoukankan      html  css  js  c++  java
  • [转]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访问有问题的,可以到网络上去查询。

    立刻行动,坚持不懈,不断学习!
  • 相关阅读:
    学习进度条7
    2016年秋季个人阅读计划
    WampServer中MySQL中文乱码解决
    LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
    人月神话阅读笔记03
    人月神话阅读笔记02
    个人总结
    人月神话阅读笔记01
    学习进度条15
    学习进度14
  • 原文地址:https://www.cnblogs.com/deng779256146/p/9101282.html
Copyright © 2011-2022 走看看