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

时间:2010-01-17 08:25:42

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

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

4 个答案:

答案 0 :(得分:19)

从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评论之后,请注意SQL Server 2008(2009年11月)中已弃用原生XML Web服务,此功能将在以后删除SQL Server的版本。 Microsoft建议使用WCF Web服务。资料来源:MSDN - Native XML Web Services: Deprecated in SQL Server 2008

答案 1 :(得分:10)

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

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

我认为您需要阅读.net Framework 3.5及更高版本的WCF数据服务。