分享
 
 
 

通过HTTP访问SQLServer2000

王朝mssql·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

一、建立访问SQL Server 2000的虚拟目录

在通过HTTP访问SQL Server 2000数据库之前,你必须设置一个适当的虚拟目录。利用SQL Server工具集中IIS虚拟目录管理器 (在SQL Server Tools程序组中点击Configure SQL XML Support启动该工具)在运行IIS的机器上定义并注册一个新的虚拟目录。 该工具指导IIS在虚拟目录与SQL Server实例之间建立关联。

IIS 服务器的名字与虚拟目录必须作为URL的一部分。虚拟目录的信息(包括登录名、口令和访问权限)用于建立与指定数据库的连接并执行查询。 URL可被定义为:

直接访问数据库对象,例如表。

执行模板文件。

执行XPath查询。

建立XML虚拟目录示例

该示例演示建立一个访问SQL Server 2000的IIS虚拟目录的全过程:

1、在Microsoft SQL Server程序组点击Configure SQL XML Support in IIS。

2、展开一个服务器,然后点击一个WEB站点。

3、在选择的WEB站点上单击右键,将鼠标移至“新建(N)”,点击“Virtual Directory”。

4、在New Virtual Directory Properties的General页输入虚拟目录名。在此例中,输入XML及物理路径

(例如C:InterpubWwwrootxml,假设你已在C:InterpubWwwroot目录中建立xml子目录)。你也可使用Browse按钮选择一个目录。

5、在Security页,选择SQL Server并输入合法的SQL Server登录信息。

6、在Data Source页,在SQL Server框中,输入服务器名,例如“(local)”,当服务器上存在多个SQL Server实例时,还需指定实例名。在Database框,输入默认数据库名,如test,假如你的服务器上有这个名称的数据库。

7、在Settings页,选择Allow URL queries,Allow template queries,Allow XPath及Allow POST选项。

8、在Virtual Names页,点击New为template(模板)建立虚拟目录。

在Virtual Name Configuration对话框的Virtual name框中输入template(或其他名字)。在Type列表 中,选择template。输入路径(例如:C:InetpubWwwrootxmlemplate,假设已建立该目录。)点击Save保存虚拟目录名。

9、其他类型如object、schema的虚拟目录建立同上。

10、点击O 4嫔柚谩?

如此,建立了一个xml虚拟目录。为测试该虚拟目录,浏览器地址栏输入

http://$#@60;IISServer$#@62;/xml?sql=SELECT*FROM+Sysobjects+WHERE+xtype=

"u"+FOR+XML+AUTO&root=root并回车。

注意:

为防止不希望的访问,建议为该目录建立一个专门的SQL Server登录帐号,并取消该帐号所有不必要的权限,尤其是DELETE、DROP、CREATE PROC权限, 最好禁止在该虚拟目录直接执行SQL语句。永远不要将SA帐号作为该虚拟目录的登录帐号。

二、利用HTTP执行SQL语句

Microsoft SQL Server 2000可通过在URL中执行查询直接访问(假如注册虚拟目录时选择了允许URL查询)。客户端可通过HTTP的GET和POST方法提交请求。

示例

在下述例子中,xml是用于访问test数据库的虚拟目录。

在查询示例中,如果查询返回多个元素,根元素可通过以下方法之添加:

在查询前添加SELECT "$#@60;ROOT$#@62;",并在其后添加SELECT "$#@60;/ROOT$#@62;"。

传递一个root关键字作为查询的参数,其值为ROOT(或其他任何值)

1、定义一个简单查询

下例返回数据库test中所有用户定义表的名字及建立日期。

http://IISserver/xml?sql=select+name,

crdate+from+sysobjects+where+xtype= "u"+for+xml+auto&root=ROOT

2、定义一个涉及多个表的查询

下例中查询返回数据库中所有用户定义表的列的数据类型定义。

http://IISServer/xml?sql= select+s.name+as+表名,s.xtype+as+类别,

+c.name+as+列名,+t.name+as+数据类型,+c.length+as+长度

+from+sysobjects+s,systypes+t,syscolumns+c+where+s.xtype=

"u"+and+c.id=object_id(s.name)+and+c.xtype=

t.xtype+order+by+1,2+for+xml+auto&root=ROOT

3、在查询中定义特殊字符

对于URL有特殊意义的字符,将其替换为“%数字”的形式,如SQL语句中的“LIKE "dt%"”正确写法应是的“LIKE "dt%25"”。

4、定义contenttype关键字

contenttype关键字规定返回的文档的content-type。在URL中未规定xsl参数text/XML文档默认的content-type。在URL中规定xsl参数, 默认的contenttype 是text/html.

5、定义xsl 关键字

下例返回数据库test中所有用户定义表的名字及建立日期。但这些信息经table.xsl处理后以表格形式显示。

http://IISserver/xml?sql=select+name,crdate+from+sysobjects

+where+xtype="u"+for+xml+auto&root=ROOT&xsl=table.xsl

在该例中,.xsl文件存储于该虚拟目录中。其内容如下:

$#@60;?xml version="1.0" encoding="GB2312"?$#@62;

$#@60;xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"$#@62;

$#@60;!--根模板--$#@62;

$#@60;xsl:template match="/"$#@62;

$#@60;HTML$#@62;$#@60;BODY$#@62;

$#@60;xsl:apply-templates select="ROOT"/$#@62;

$#@60;/BODY$#@62;$#@60;/HTML$#@62;

$#@60;/xsl:template$#@62;

$#@60;xsl:template match="ROOT"$#@62;

$#@60;TABLE border="1"$#@62;

$#@60;xsl:for-each select="sysobjects[0]/@*"$#@62;

$#@60;TH$#@62;$#@60;xsl:eval$#@62;this.name$#@60;/xsl:eval$#@62;$#@60;/TH$#@62;

$#@60;/xsl:for-each$#@62;

$#@60;xsl:apply-templates select="sysobjects"/$#@62;

$#@60;/TABLE$#@62;

$#@60;/xsl:template$#@62;

$#@60;xsl:template match="sysobjects"$#@62;

$#@60;TR$#@62;

$#@60;xsl:for-each select="@*"$#@62;

$#@60;TD$#@62;$#@60;xsl:value-of/$#@62;$#@60;/TD$#@62;

$#@60;/xsl:for-each$#@62;

$#@60;/TR$#@62;

$#@60;/xsl:template$#@62;

$#@60;/xsl:stylesheet$#@62;

三、利用HTTP执行模板文件

在URL中编写长的SQL查询非常麻烦,另一个方法是,用模板定义查询(SQL或XPath)。模板文件名在URL中规定。使用模板你能:

定义SQL查询或XPath查询。

规定执行SQL或XPath查询产生的XML片断的顶级元素。

定义能传递给SQL语句或XPath查询的参数。

声明名字空间

定义应用结果文档的XSL样式表。

另外,如果将所有需要的查询都通过模板定义,并规定不允许在URL中直接执行SQL语句,将带来更好的安全性。

使用XML模板

模板文件的一般格式是:

$#@60;ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"

sql:xsl="XSL FileName" $#@62;

$#@60;sql:header$#@62;

$#@60;sql:param$#@62;..$#@60;/sql:param$#@62;

$#@60;sql:param$#@62;..$#@60;/sql:param$#@62;...n

$#@60;/sql:header$#@62;

$#@60;sql:query$#@62;

sql statement(s)

$#@60;/sql:query$#@62;

$#@60;sql:xpath-query mapping-schema="SchemaFileName.xml"$#@62;

XPath query

$#@60;/sql:xpath-query$#@62;

$#@60;/ROOT$#@62;

在模板中所有部分都是可选的。然而xmlns:sql="urn:schemas-microsoft-com:xml-sql"是必须的。名字空间可命名为任何其他名字,sql只是一个别名。

$#@60;ROOT$#@62;

该标记规定XML文档的顶级元素。$#@60;ROOT$#@62;可取任意名字。

$#@60;sql:header$#@62;

该标记用于包含头信息。在当前的实现,只有$#@60;sql:param$#@62;能被置于该标记中。

$#@60;sql:param$#@62;

该元素用于定义一个参数以传递给模板中的查询。每个$#@60;param$#@62;元素定义一个参数,可以有多个$#@60;param$#@62;元素置于$#@60;sql:header$#@62;标记中。

$#@60;sql:query$#@62;

该元素用于规定SQL查询,可以定义多个$#@60;sql:query$#@62;元素,

$#@60;sql:xpath-query$#@62;

规定XPath查询。

sql:xsl

规定作用于XML文档的XSL样式表。

mapping-schema

该属性用于标识XDR大纲。

注意:每个$#@60;sql:query$#@62;或$#@60;sql:XPath-query$#@62;表示一个分离的事务。因此,如果在模板中有多个 $#@60;sql:query$#@62;或 $#@60;sql:XPath-query$#@62;标记,如果其中一个失败,其他将继续处理。

使用模板执行SQL查询

下例中,xm

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有