知识大全 通过HTTP访问SQL Server 2000
Posted 知
篇首语:聪明在于勤奋,天才在于积累。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 通过HTTP访问SQL Server 2000相关的知识,希望对你有一定的参考价值。
通过HTTP访问SQL Server 2000 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 建立访问SQL Server 的虚拟目录 在通过HTTP访问SQL Server 数据库之前 你必须设置一个适当的虚拟目录 利用SQL Server工具集中IIS虚拟目录管理器 (在SQL Server Tools程序组中点击Configure SQL XML Support启动该工具)在运行IIS的机器上定义并注册一个新的虚拟目录 该工具指导IIS在虚拟目录与SQL Server实例之间建立关联 IIS 服务器的名字与虚拟目录必须作为URL的一部分 虚拟目录的信息(包括登录名 口令和访问权限)用于建立与指定数据库的连接并执行查询 URL可被定义为 直接访问数据库对象 例如表 执行模板文件 执行XPath查询 建立XML虚拟目录示例 该示例演示建立一个访问SQL Server 的IIS虚拟目录的全过程 在Microsoft SQL Server程序组点击Configure SQL XML Support in IIS 展开一个服务器 然后点击一个WEB站点 在选择的WEB站点上单击右键 将鼠标移至 新建(N) 点击 Virtual Directory 在New Virtual Directory Properties的General页输入虚拟目录名 在此例中 输入XML及物理路径 (例如C \\Interpub\\Wwwroot\\xml 假设你已在C \\Interpub\\Wwwroot目录中建立xml子目录) 你也可使用Browse按钮选择一个目录 在Security页 选择SQL Server并输入合法的SQL Server登录信息 在Data Source页 在SQL Server框中 输入服务器名 例如 (local) 当服务器上存在多个SQL Server实例时 还需指定实例名 在Database框 输入默认数据库名 如test 假如你的服务器上有这个名称的数据库 在Settings页 选择Allow URL queries Allow template queries Allow XPath及Allow POST选项 在Virtual Names页 点击New为template(模板)建立虚拟目录 在Virtual Name Configuration对话框的Virtual name框中输入template(或其他名字) 在Type列表 中 选择template 输入路径(例如 C:\\Inetpub\\Wwwroot\\xml\\template 假设已建立该目录 )点击Save保存虚拟目录名 其他类型如object schema的虚拟目录建立同上 点击O 4嫔柚谩? 如此 建立了一个xml虚拟目录 为测试该虚拟目录 浏览器地址栏输入 //$#@ ;IISServer$#@ ;/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 可通过在URL中执行查询直接访问(假如注册虚拟目录时选择了允许URL查询) 客户端可通过HTTP的GET和POST方法提交请求 示例 在下述例子中 xml是用于访问test数据库的虚拟目录 在查询示例中 如果查询返回多个元素 根元素可通过以下方法之添加 在查询前添加SELECT $#@ ;ROOT$#@ ; 并在其后添加SELECT $#@ ;/ROOT$#@ ; 传递一个root关键字作为查询的参数 其值为ROOT(或其他任何值) 定义一个简单查询 下例返回数据库test中所有用户定义表的名字及建立日期 //IISserver/xml?sql=select+name crdate+from+sysobjects+where+xtype= u +for+xml+auto&root=ROOT 定义一个涉及多个表的查询 下例中查询返回数据库中所有用户定义表的列的数据类型定义 //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+ +for+xml+auto&root=ROOT 在查询中定义特殊字符 对于URL有特殊意义的字符 将其替换为 %数字 的形式 如SQL语句中的 LIKE dt% 正确写法应是的 LIKE dt% 定义contenttype关键字 contenttype关键字规定返回的文档的content type 在URL中未规定xsl参数text/XML文档默认的content type 在URL中规定xsl参数 默认的contenttype 是text/ 定义xsl 关键字 下例返回数据库test中所有用户定义表的名字及建立日期 但这些信息经table xsl处理后以表格形式显示 //IISserver/xml?sql=select+name crdate+from+sysobjects +where+xtype= u +for+xml+auto&root=ROOT&xsl=table xsl 在该例中 xsl文件存储于该虚拟目录中 其内容如下 $#@ ;?xml version= encoding= GB ?$#@ ; $#@ ;xsl:stylesheet xmlns:xsl= xsl $#@ ; $#@ ;! 根模板 $#@ ; $#@ ;xsl:template match= / $#@ ; $#@ ;HTML$#@ ;$#@ ;BODY$#@ ; $#@ ;xsl:apply templates select= ROOT /$#@ ; $#@ ;/BODY$#@ ;$#@ ;/HTML$#@ ; $#@ ;/xsl:template$#@ ; $#@ ;xsl:template match= ROOT $#@ ; $#@ ;TABLE border= $#@ ; $#@ ;xsl:for each select= sysobjects[ ]/@* $#@ ; $#@ ;TH$#@ ;$#@ ;xsl:eval$#@ ;this name$#@ ;/xsl:eval$#@ ;$#@ ;/TH$#@ ; $#@ ;/xsl:for each$#@ ; $#@ ;xsl:apply templates select= sysobjects /$#@ ; $#@ ;/TABLE$#@ ; $#@ ;/xsl:template$#@ ; $#@ ;xsl:template match= sysobjects $#@ ; $#@ ;TR$#@ ; $#@ ;xsl:for each select= @* $#@ ; $#@ ;TD$#@ ;$#@ ;xsl:value of/$#@ ;$#@ ;/TD$#@ ; $#@ ;/xsl:for each$#@ ; $#@ ;/TR$#@ ; $#@ ;/xsl:template$#@ ; $#@ ;/xsl:stylesheet$#@ ; 三 利用HTTP执行模板文件 在URL中编写长的SQL查询非常麻烦 另一个方法是 用模板定义查询(SQL或XPath) 模板文件名在URL中规定 使用模板你能 定义SQL查询或XPath查询 规定执行SQL或XPath查询产生的XML片断的顶级元素 定义能传递给SQL语句或XPath查询的参数 声明名字空间 定义应用结果文档的XSL样式表 另外 如果将所有需要的查询都通过模板定义 并规定不允许在URL中直接执行SQL语句 将带来更好的安全性 使用XML模板 模板文件的一般格式是 $#@ ;ROOT xmlns:sql= urn:schemas microsoft :xml sql sql:xsl= XSL FileName $#@ ; $#@ ;sql:header$#@ ; $#@ ;sql:param$#@ ; $#@ ;/sql:param$#@ ; $#@ ;sql:param$#@ ; $#@ ;/sql:param$#@ ; n $#@ ;/sql:header$#@ ; $#@ ;sql:query$#@ ; sql statement(s) $#@ ;/sql:query$#@ ; $#@ ;sql:xpath query mapping schema= SchemaFileName xml $#@ ; XPath query $#@ ;/sql:xpath query$#@ ; $#@ ;/ROOT$#@ ; 在模板中所有部分都是可选的 然而xmlns:sql= urn:schemas microsoft :xml sql 是必须的 名字空间可命名为任何其他名字 sql只是一个别名 $#@ ;ROOT$#@ ; 该标记规定XML文档的顶级元素 $#@ ;ROOT$#@ ;可取任意名字 $#@ ;sql:header$#@ ; 该标记用于包含头信息 在当前的实现 只有$#@ ;sql:param$#@ ;能被置于该标记中 $#@ ;sql:param$#@ ; 该元素用于定义一个参数以传递给模板中的查询 每个$#@ ;param$#@ ;元素定义一个参数 可以有多个$#@ ;param$#@ ;元素置于$#@ ;sql:header$#@ ;标记中 $#@ ;sql:query$#@ ; 该元素用于规定SQL查询 可以定义多个$#@ ;sql:query$#@ ;元素 $#@ ;sql:xpath query$#@ ; 规定XPath查询 sql:xsl 规定作用于XML文档的XSL样式表 mapping schema 该属性用于标识XDR大纲 注意 每个$#@ ;sql:query$#@ ;或$#@ ;sql:XPath query$#@ ;表示一个分离的事务 因此 如果在模板中有多个 $#@ ;sql:query$#@ ;或 $#@ ;sql:XPath query$#@ ;标记 如果其中一个失败 其他将继续处理 使用模板执行SQL查询 下例中 xm cha138/Article/program/SQLServer/201311/22035相关参考
访问多个SQLServer数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 假设我们要在OR
知识大全 SQL Server 2005 控制用户权限访问表
SQLServer2005控制用户权限访问表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一需
用DELPHI编程访问SQLSERVER数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! D
知识大全 SQL Server如何访问sybase数据库的表
SQLServer如何访问sybase数据库的表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
解决限制访问SQLServer的IP地址的办法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
知识大全 在ORACLE里设置访问多个SQL Server数据库
在ORACLE里设置访问多个SQLServer数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 SQL Server 2005和SQL Server 2000数据的相互导入
SQLServer2005和SQLServer2000数据的相互导入 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
知识大全 MS SQL基础教程 SQL Server 2000 简介
MSSQL基础教程SQLServer2000简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n
SQLServer2000问答 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 问SQLServe
知识大全 当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
当我正在为表建立索引的时候,SQLServer会禁止对表的访问吗? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一