使用HTTP访问SQLServer


使用 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=
  1<root+xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT+*+FROM+Customers+FOR+XML+AUTO</sql:query>
  2    
  3
  4  * 在 URL 中指定模板文件。 
  5
  6在 URL 中写入长 SQL 查询会很麻烦。此外,浏览器对在 URL 中可以输入的文本量可能有限制。若要避免这些问题,可以编写模板并将其存储在文件中。模板是包含一个或多个 SQL 语句和 XPath 查询的有效的 XML 文档。可以在 URL 中直接指定模板文件,例如: 
  7    
  8        http://IISServer/nwind/TemplateVirtualName/templatefile.xml
  9    
 10
 11在 URL 中, **TemplateVirtualName** 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 **template** 类型的虚拟名称。 
 12
 13模板文件还删除来自用户的数据库查询的详细信息以增强安全性。通过将模板文件存储在注册数据库时所在的虚拟根目录(或其子目录)中,删除虚拟根上的 URL 查询处理服务并只允许 SQL Server XML ISAPI 处理文件及返回结果集,从而加强了安全性。 
 14
 15  * 指定在带批注的 XML 数据简化 (XDR) 架构(也称为映射架构)上执行的 XPath 查询。 
 16
 17从概念上讲,对映射架构编写 XPath 查询与使用 CREATE VIEW 语句创建视图并对视图编写 SQL 查询相似,例如: 
 18    
 19        http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID="ALFKI"]
 20    
 21
 22在这个 URL 中: 
 23
 24    * **SchemaVirtualName** 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 **schema** 类型的虚拟名称。   
 25  
 26
 27    * **Customer[@CustomerID="ALFKI"]** 是在该 URL 中指定的 **schemafile.xml** 上执行的 Xpath 查询。 
 28  * 直接在 URL 中指定数据库对象。 
 29
 30可以将数据库对象(如表和视图)指定为 URL 的一部分,并对数据库对象指定 Xpath 查询,例如: 
 31    
 32        http://IISServer/nwind/dbobjectVirtualName/XpathQuery
 33    
 34
 35在这个 URL 中, **dbobjectVirtualName** 是使用用于 SQL Server 的 IIS 虚拟目录管理实用工具创建的 **dbobject** 类型的虚拟名称。 
 36
 37**说明** 当在 URL 中执行需要资源(如内存)的操作(创建临时表和临时存储过程、声明游标、执行 **sp_xml_preparedocument** 等等)时,必须执行适当的相应命令(如 DROP TABLE、DROP PROCEDURE、DEALLOCATE 游标或 EXECUTE **sp_xml_removedocument** )以释放资源。 
 38
 39
 40
 41
 42#####  XML 文档和文档片段 
 43
 44当用 **root** 参数执行模板或查询时,结果是有单个顶层元素的完整 XML 文档。例如,下列 URL 执行模板: 
 45    
 46    
 47    http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml
 48    
 49
 50下面是一个示例模板文件 (MyTemplate.xml): 
 51    
 52    
 53    <root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
 54<sql:query>
 55          SELECT  * 
 56          FROM    Customers 
 57          FOR XML AUTO
 58        </sql:query>
 59</root> 
 60    
 61
 62模板中的 <root> 标记为结果 XML 文档提供了单个的顶层元素。 
 63
 64可以直接在 URL 中指定查询。在此例中, **root** 参数指定返回文档中的顶层元素: 
 65    
 66    
 67    http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO?root=root 
 68    
 69
 70如果在写上述查询时不使用 **root** 参数,将返回一个 XML 文档片段(即缺少单个顶层元素的 XML 文档)。 该片段没有标题信息。例如,下列 URL 将返回文档片段: 
 71    
 72    
 73    http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO
 74    
 75
 76当请求一个 XML 文档时,将返回用以标识文档编码类型的字节顺序标记。字节顺序标记是用以标识 XML 文档编码类型的标准字节顺序。XML 分析器使用该字节顺序标记确定文档编码类型(如 Unicode)。例如,字节顺序标记"oxff, 0xfe"将文档标识为 Unicode。默认情况下,分析器假设 UTF-8 为文档编码类型。 
 77
 78当请求 XML 片段时将不返回字节顺序标记,因为字节顺序标记属于 XML 文档标 
 79
 80题,而 XML 片段中没有标题。 
 81
 82#  使用用于 SQL Server 的 IIS 虚拟目录管理实用工具 
 83
 84在使用 HTTP 访问 Microsoft? SQL Server? 2000 数据库之前,必须安装适当的虚拟目录。在运行 Microsoft Internet 信息服务 (IIS) 的计算机上,使用用于 SQL Server 的 IIS 虚拟目录管理实用工具(在"SQL Server 工具"程序组中单击"在 IIS 中配置 **** SQL XML 支持")定义并注册新的虚拟目录,即所谓的虚拟根。该实用工具指示 IIS 在新的虚拟目录和 Microsoft SQL Server 实例之间创建关联。 
 85
 86必须将 IIS 服务器和虚拟目录的名称指定为 URL 的一部分。虚拟目录(包括登录、密码和访问权限)中的信息用于建立与特定数据库的连接并执行查询。 
 87
 88可以指定 URL: 
 89
 90  * 直接访问数据库对象,例如表。 
 91
 92在这种情况下,URL 将包括 **dbobject** 类型的虚拟名称。 
 93
 94  * 执行模板文件。 
 95
 96模板是由一个或多个 SQL 语句组成的有效的 XML 文档。在 URL 中指定模板文件时,将执行存储在模板文件中的 SQL 命令。可以直接在 URL 中指定 SQL 查询,但考虑到安全性,不建议这样做。 
 97
 98  * 执行 XPath 查询。 
 99
100对指定作为 URL 一部分的带批注的映射架构文件执行 XPath 查询。 
101
102
103
104
105#####  虚拟名 
106
107若要使模板文件、映射架构文件或数据库对象(如表或视图)成为 URL 的一部分,必须创建 **template** 、 **schema** 和 **dbobject** 类型的虚拟名称。将虚拟名称指定为 URL 的一部分,以便执行模板文件、对映射架构文件执行 XPath 查询或直接访问数据库。 
108
109在 URL 中指定的虚拟名称类型( **template** 、 **schema** 、 **dbobject** )还用于决定在 URL 中指定的文件类型(模板文件或映射架构文件)。例如,下面的 URL 使用模板访问 SQL Server 数据库: 
110    
111    
112    http://IISServer/nwind/TemplateVirtualName/Template.xml
113    
114
115**TemplateVirtualName** 是 **template** 类型的虚拟名称,用于标识指定的文件 (Template.xml) 是模板文件。 
116
117#</root></root+xmlns:sql="urn:schemas-microsoft-com:xml-sql">
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus