代码之家  ›  专栏  ›  技术社区  ›  abmv

将SQL Server数据库公开为Web服务以从中获取数据

  •  16
  • abmv  · 技术社区  · 14 年前

    是否有任何.NET工具将Microsoft SQL Server中表的数据公开为Web服务?我必须写代码吗?有样品吗?关于如何公开数据,您有什么建议?

    4 回复  |  直到 13 年前
        1
  •  10
  •   Community Erin Dees    7 年前

    使用时 WCF Data Services 可以选择,就像 Anton said ,您应该考虑提供到整个/部分数据库的直接路径是否是一个好主意。

    另一个选择是建立一个数据访问层,它只允许一个小的操作集,比如:“你可以添加一个客户,但不允许你删除一个发票。”

        2
  •  19
  •   Community Erin Dees    7 年前

    从SQL Server 2005开始,您可以直接从数据库公开本机XML Web服务。

    可以将SQL Server配置为通过HTTP端点本地侦听HTTP SOAP请求。通常,您希望将存储过程或用户定义函数公开为HTTP端点,因此需要进行少量编码。但从这些例子中应该很容易理解。

    通常,您将通过如下方式创建存储过程开始:

    CREATE PROCEDURE [dbo].[getContact]
       @ID [int]       
    AS
    BEGIN
       SELECT * FROM [AdventureWorks].[Person].[Contact] WHERE ContactID = @ID   
    END;
    

    然后您可以这样定义HTTP端点:

    CREATE ENDPOINT SQLEP_GetContact
        STATE = STARTED
    AS HTTP
    (
        PATH = '/Contact',
        AUTHENTICATION = (INTEGRATED),
        PORTS = (CLEAR),
        SITE = 'localhost'
    )
    FOR SOAP
    (
        WEBMETHOD 'ContactInfo' (NAME='AdventureWorks.dbo.getContact'),
        BATCHES = DISABLED,
        WSDL = DEFAULT,
        DATABASE = 'AdventureWorks',
        NAMESPACE = 'http://AdventureWorks/Contact'
    );
    

    创建端点后,可以向服务器提交HTTP请求,以确保端点正在响应: http://localhost/Contact?wsdl .

    要修改或停止端点,可以使用 ALTER ENDPOINT 命令:

    ALTER ENDPOINT SQLEP_GetContact
        STATE = STOPPED;
    

    您可能希望通过签出以下文章来继续:

    更新: 跟随 Ed Harper 下面的注释,请注意,本机XML Web服务在SQL Server 2008(2009年11月)中已被弃用,此功能将在未来的SQL Server版本中删除。微软建议改用WCF Web服务。来源: MSDN - Native XML Web Services: Deprecated in SQL Server 2008

        3
  •  3
  •   Stephen Oberauer    13 年前

    Scott Hanselman解释了如何使用Visual Studio 2010从数据库创建OData/open data/wcf数据服务:

    http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowIncludingXMLAndJSONIn30Minutes.aspx

        4
  •  1
  •   Anton    14 年前

    我认为您将希望阅读.NET Framework 3.5及更高版本的WCF数据服务。