【问题标题】:Expose SQL Server database as web service to get data from将 SQL Server 数据库公开为 Web 服务以从中获取数据
【发布时间】:2010-01-17 08:25:42
【问题描述】:

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

【问题讨论】:

    标签: c# .net sql-server web-services


    【解决方案1】:

    从 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 服务器。 Microsoft 建议改用 WCF Web 服务。来源:MSDN - Native XML Web Services: Deprecated in SQL Server 2008

    【讨论】:

    • 值得注意的是,原生 XML Web 服务在 SQL 2008 中已被弃用。
    • 谢谢埃德。我没有意识到这一点。来源:msdn.microsoft.com/en-us/library/cc280436.aspx。我用这个更新了我的答案,以及微软使用 WCF 的建议。
    • 此功能已在 SQL 2012 中完全删除。
    【解决方案2】:

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

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

    【讨论】:

    • 只是添加,您还可以根据需要编写 ASP.NET Web API 并公开相关的 Api(例如从 DB 获取数据等)。
    【解决方案3】:

    Scott Hanselman 解释了如何使用 Visual Studio 2010 从数据库创建 OData / Open Data / WCF 数据服务:

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

    【讨论】:

      【解决方案4】:

      我认为您需要阅读 WCF 数据服务,该服务可从 .net Framework 3.5 及更高版本获得。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多