加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer 2005中创建Web Services

发布时间:2020-12-12 14:13:43 所属栏目:MsSql教程 来源:网络整理
导读:SQLServer 2005中数据库引擎加入了对Native Web Services的支持。这点让我们可以很方便把 SQLServer 2005中的自定义函数或存储过程等非常迅速的发布为XML Web Services接口公布出来。这点对于一些便捷的数据应用和移动应用提供了非常好的解决方案。 1、在SQL

SQLServer 2005中数据库引擎加入了对Native Web Services的支持。这点让我们可以很方便把 SQLServer 2005中的自定义函数或存储过程等非常迅速的发布为XML Web Services接口公布出来。这点对于一些便捷的数据应用和移动应用提供了非常好的解决方案。

1、在SQLServer 2005示范库AdventureWorks中创建一个根据Color获取Products的存储过程。

?1? CREATE ? PROCEDURE ? [ dbo ] . GetProductsByColor
?2? ?? @Color nvarchar ( 15 )
?3? AS ?4? BEGIN ?5? SET ?NOCOUNT? ON ;
?6? ?7? SELECT ?ProductID,? Name ,?ProductNumber,?Color
?8? FROM ?Production.Product
?9? WHERE ?(Color? = 10? END

2、利用SQLServer 2005新增的 Create EndPoint 创建Web Services。

?EndPoint?AdvProducts
??STATE? ?Started
?HTTP
??(
????PATH? ' /Products ' ????AUTHENTICATION? ?(INTEGRATED),0)">????PORTS? ?(CLEAR),0)">????SITE? localhost ????CLEAR_PORT? ? 2006 ??)
11? FOR ?SOAP
12? 13? ????WEBMETHOD? 14? ??????(
15? ????????NAME? AdventureWorks.dbo.GetProductsByColor 16? ???????? SCHEMA ?STANDARD
17? ??????),128)">18? ????WSDL? DEFAULT 19? ???? DATABASE AdventureWorks 20? ????NAMESPACE? 21? ??)

上面的 STATE = Started,意思是说创建好这个 EndPoint 后自动启动并开始监听外部请求。Path = '/Products' 表示发布的Web Services的路径,AUTHENTICATION = (INTEGRATED)表示验证方式采用集成验证,PORTS = (CLEAR)表示采用HTTP协议,SITE='localhost'表示发布在本机,CLEAR_PORT=2006表示发布的端口号。上面整体意思,表示发布后的Web Services的地址应该是:?http://localhost:2006/Products?WSDL。如果不指定CLEAR_PORT,则默认发布到80端口。因为我的Windows XP的80端口被我家的 IIS 占用了,所以只好用其他端口了。接着看下面是WebService的接口声明部分。WEBMETHOD 'GetProductsByColor'()表示发布的WebService的方法名称为 GetProductsByColor,其他都采用默认设置。

完成上面命令后,看看这个地方出现了 AdvProduct 的 EndPoint 了哦。


最后,你只要向用C#写的WebService一样进行引用使用即可。方便吧?!

那么,如果我们不想在SQLServer Management Studio中进行这一系列的操作,而想通过直接在C#中编写代码完成上面,应该如何做呢?答案是利用SQLServer 2005提供的SQLServer Management Object啦。具体再动手下:

1、新建一个WinForm或Console的应用项目,添加三个引用,Microsoft.SqlServer.ConnectionInfo,Microsoft.SqlServer.Smo和 Microsoft.SqlServer.SqlEnum。其中核心的当然就是Microsoft.SqlServer.Smo了,它就是我们说的 SqlServer Management Object核心所在了。

2、写如下C#代码:

?1

private void ?button1_Click( object ?sender,?EventArgs?e)
?2

{
?3

?Server?sqlServer?
=?new?Server();
?4


?5

?Endpoint?myEndPoint?
?Endpoint(sqlServer,?"AdvProducts);
?6?7

?myEndPoint.ProtocolType?
?ProtocolType.Http;
?8

?myEndPoint.Protocol.Http.HttpAuthenticationModes?
?HttpAuthenticationModes.Integrated;
?9

?myEndPoint.Protocol.Http.HttpPortTypes?
?HttpPortTypes.Clear;
10

?myEndPoint.Protocol.Http.WebSite?
localhost;
11

?myEndPoint.Protocol.Http.WebSiteUrlPath?
/Products12

?myEndPoint.Protocol.Http.ClearPort?
20061314

?myEndPoint.EndpointType?
?EndpointType.Soap;
15

?myEndPoint.Payload.Soap.DefaultDatabase?
AdventureWorks16

?myEndPoint.Payload.Soap.XmlFormatOption?
?XmlFormatOption.XmlFormat;
17

?myEndPoint.Payload.Soap.XsdSchemaOption?
?XsdSchemaOption.Standard;
18

?myEndPoint.Payload.Soap.WsdlGeneratorOption?
?WsdlGeneratorOption.Procedure;
19

?myEndPoint.Payload.Soap.WsdlGeneratorProcedure?
[master].[sys].[sp_http_generate_wsdl_defaultcomplexorsimple]2021

?SoapPayloadMethod?method?
?SoapPayloadMethod(myEndPoint.Payload.Soap,0)">GetProductsByColor22

?method.MethodXsdSchemaOption?
?MethodXsdSchemaOption.Standard;
23

?method.ResultFormat?
?ResultFormat.RowSets;
24

?method.SetSqlMethod(
dbo25

?method.MethodLoginType?
?MethodLoginType.Windows;
2627

?myEndPoint.Payload.Soap.SoapPayloadMethods.Add(method);
2829

?myEndPoint.Create();
30

?myEndPoint.Start();
3132

?MessageBox.Show(
WebServices?Published.33

}

大家可以理解上面的代码,对照上面的Create Endpoint的SQL语句来理解,那就非常容易理解了。


觉得写得不错,帮忙打赏下,谢谢!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读