使用 HTTP 访问 SQL Server

原创 2001年05月19日 13:20:00

使用 HTTP 访问 SQL Server

可以使用 HTTP 访问 Microsoft® SQL Server™ 2000。在可以使用 HTTP 指定查询前,必须先用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建一个虚拟根。

SQL Server 的 HTTP 访问能力使您得以:

  • 直接在 URL 中指定 SQL 查询,例如:
    http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&root=root
    

    指定 FOR XML 子句以 XML 文档而不是标准行集的形式返回结果。根参数可标识单一的顶层元素。

  • 直接在 URL 中指定模板。

    模板是包含一个或多个 SQL 语句的有效的 XML 文档。模板使您得以将数据放在一起以形成有效的 XML 文档,但直接在 URL 中指定查询时不一定是这样。例如:

    http://IISServer/nwind?template=<ROOT+xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT+*+FROM+Customers+FOR+XML+AUTO</sql:query></ROOT>
    
  • 在 URL 中指定模板文件。

    在 URL 中写入长 SQL 查询会很麻烦。此外,浏览器对在 URL 中可以输入的文本量可能有限制。若要避免这些问题,可以编写模板并将其存储在文件中。模板是包含一个或多个 SQL 语句和 XPath 查询的有效的 XML 文档。可以在 URL 中直接指定模板文件,例如:

    http://IISServer/nwind/TemplateVirtualName/templatefile.xml
    

    在 URL 中,TemplateVirtualName 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 template 类型的虚拟名称。

    模板文件还删除来自用户的数据库查询的详细信息以增强安全性。通过将模板文件存储在注册数据库时所在的虚拟根目录(或其子目录)中,删除虚拟根上的 URL 查询处理服务并只允许 SQL Server XML ISAPI 处理文件及返回结果集,从而加强了安全性。

  • 指定在带批注的 XML 数据简化 (XDR) 架构(也称为映射架构)上执行的 XPath 查询。

    从概念上讲,对映射架构编写 XPath 查询与使用 CREATE VIEW 语句创建视图并对视图编写 SQL 查询相似,例如:

    http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID="ALFKI"]
    

    在这个 URL 中:

    • SchemaVirtualName 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 schema 类型的虚拟名称。

    • Customer[@CustomerID="ALFKI"] 是在该 URL 中指定的 schemafile.xml 上执行的 Xpath 查询。
  • 直接在 URL 中指定数据库对象。

    可以将数据库对象(如表和视图)指定为 URL 的一部分,并对数据库对象指定 Xpath 查询,例如:

    http://IISServer/nwind/dbobjectVirtualName/XpathQuery
    

    在这个 URL 中,dbobjectVirtualName 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 dbobject 类型的虚拟名称。

    说明  当在 URL 中执行需要资源(如内存)的操作(创建临时表和临时存储过程、声明游标、执行sp_xml_preparedocument 等等)时,必须执行适当的相应命令(如 DROP TABLE、DROP PROCEDURE、DEALLOCATE 游标或 EXECUTE sp_xml_removedocument)以释放资源。

XML 文档和文档片段

当用 root 参数执行模板或查询时,结果是有单个顶层元素的完整 XML 文档。例如,下列 URL 执行模板:

http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml

下面是一个示例模板文件 (MyTemplate.xml):

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:query>
      SELECT  * 
      FROM    Customers 
      FOR XML AUTO
    </sql:query>
</ROOT> 

模板中的 <ROOT> 标记为结果 XML 文档提供了单个的顶层元素。

可以直接在 URL 中指定查询。在此例中,root 参数指定返回文档中的顶层元素:

http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO?root=root 

如果在写上述查询时不使用 root 参数,将返回一个 XML 文档片段(即缺少单个顶层元素的 XML 文档)。 该片段没有标题信息。例如,下列 URL 将返回文档片段:

http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO

当请求一个 XML 文档时,将返回用以标识文档编码类型的字节顺序标记。字节顺序标记是用以标识 XML 文档编码类型的标准字节顺序。XML 分析器使用该字节顺序标记确定文档编码类型(如 Unicode)。例如,字节顺序标记"oxff, 0xfe"将文档标识为 Unicode。默认情况下,分析器假设 UTF-8 为文档编码类型。

当请求 XML 片段时将不返回字节顺序标记,因为字节顺序标记属于 XML 文档标

题,而 XML 片段中没有标题。

使用用于 SQL Server 的 IIS 虚拟目录管理实用工具

在使用 HTTP 访问 Microsoft® SQL Server™ 2000 数据库之前,必须安装适当的虚拟目录。在运行 Microsoft Internet 信息服务 (IIS) 的计算机上,使用用于 SQL Server 的 IIS 虚拟目录管理实用工具(在"SQL Server 工具"程序组中单击"在 IIS 中配置 SQL XML 支持")定义并注册新的虚拟目录,即所谓的虚拟根。该实用工具指示 IIS 在新的虚拟目录和 Microsoft SQL Server 实例之间创建关联。

必须将 IIS 服务器和虚拟目录的名称指定为 URL 的一部分。虚拟目录(包括登录、密码和访问权限)中的信息用于建立与特定数据库的连接并执行查询。

可以指定 URL:

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

    在这种情况下,URL 将包括 dbobject 类型的虚拟名称。

  • 执行模板文件。

    模板是由一个或多个 SQL 语句组成的有效的 XML 文档。在 URL 中指定模板文件时,将执行存储在模板文件中的 SQL 命令。可以直接在 URL 中指定 SQL 查询,但考虑到安全性,不建议这样做。

  • 执行 XPath 查询。

    对指定作为 URL 一部分的带批注的映射架构文件执行 XPath 查询。

虚拟名

若要使模板文件、映射架构文件或数据库对象(如表或视图)成为 URL 的一部分,必须创建 templateschemadbobject 类型的虚拟名称。将虚拟名称指定为 URL 的一部分,以便执行模板文件、对映射架构文件执行 XPath 查询或直接访问数据库。

在 URL 中指定的虚拟名称类型(templateschemadbobject)还用于决定在 URL 中指定的文件类型(模板文件或映射架构文件)。例如,下面的 URL 使用模板访问 SQL Server 数据库:

http://IISServer/nwind/TemplateVirtualName/Template.xml

TemplateVirtualNametemplate 类型的虚拟名称,用于标识指定的文件 (Template.xml) 是模板文件。

 

SQL Server 2012 SQLEXPRESS 127.0.0.1(IP地址方式)无法连接访问问题的解决

先说下本人电脑的环境吧,Win8.1中文版(64位),由于工作需要,用到MS SQL数据库,结果装上了2008 R2 企业版,无法使用, 就从网上下载了SQL Server2012 SQLEXPRES...
  • mutouren56
  • mutouren56
  • 2015年05月27日 14:09
  • 5765

WCF+SQL Server 2008 医院管理系统项目解析(一)

WCF+SQL Server 2008 医院管理系统项目解析(一) 第一章使用Vs2010 版本搭建WCF框架 1.1新建项目,创建WCF服务端。 第一步:打开Vs界面,点击左上角文件,点击新建...
  • GX_LiShiTing
  • GX_LiShiTing
  • 2015年05月27日 09:16
  • 1474

SQL Server 不存在或访问被拒绝 --以及解决方法

在使用sql server连接程序和数据库时,发生了这种错误“SQL Server 不存在或访问被拒绝 ”,根据网络上的信息,整理出下面的解决方法============= 首先,检查网络物理连接 =...
  • findgeneralgirl
  • findgeneralgirl
  • 2017年11月18日 20:48
  • 204

VC使用ADO访问sql server数据库

软件:vs2010、sql server2005 代码如下: #include #include using namespace std; //1、添加对ADO的支持 #import "C...
  • woshiyuanlei
  • woshiyuanlei
  • 2015年05月31日 13:37
  • 1502

使用android访问SQLServer数据库

1.SQL驱动 下载可以支持android的SQL驱动,下载地址http://sourceforge.net/projects/jtds/files/ 注意只能下载1.2.7版本。android不支持...
  • easyboot
  • easyboot
  • 2017年01月23日 11:49
  • 3234

搭建可用http访问的svn(windows)

SVN是Subversion的简称,是一个开放源代码的版本控制系统,广泛应用于项目的团队开发之中,达到方便共用资源的目的。在个人开发之中,也可以使用SVN来管理自己的源码,或者通过SVN发布自己的项目...
  • yangyangrenren
  • yangyangrenren
  • 2016年03月28日 16:44
  • 6129

php调用sqlserver存储过程实例,带输入输出参数,经测试可用

因工作原因最近需要用到调用sqlserver存储过程,并且需要输入输出参数,因为单纯的参考网上的一些例子总有问题,最后自己解决后决定写一写解决的过程。 首先存储过程如下(其中带*的需要注意): CR...
  • txqd1989
  • txqd1989
  • 2017年06月26日 14:14
  • 1399

sql server 连接带密码的access

sql server 导入带密码的access数据 如何实现将Access的数据的导入到SQL Server呢,相信网络上有很多教程来帮助大家了。但是,大家发现如果access文档使用了密码加...
  • xcntime
  • xcntime
  • 2014年03月16日 01:23
  • 1370

如何设置远程访问到SQLserver服务器(局域网内的设置)

如何设置远程访问到SQLserver服务器(局域网内的设置)
  • zcp0415
  • zcp0415
  • 2017年04月27日 11:06
  • 1911

sqlserver 远程速度慢

路由器连不下远程SqlServer 路由器连不上远程SqlServer简单记录一下:我用磊科N205+路由器,连不上远程的SqlServer服务器。之前用户ADSL上网时,是可以连的。 分析问题查阅...
  • rjc20098022
  • rjc20098022
  • 2014年05月23日 00:01
  • 1462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用 HTTP 访问 SQL Server
举报原因:
原因补充:

(最多只允许输入30个字)