使用 ADO 执行 SQLXML 4.0 查询

适用于:SQL ServerAzure SQL 数据库

在以前版本的 SQLXML 中,使用 SQLXML IIS 虚拟目录和 SQLXML ISAPI 筛选器支持基于 HTTP 的查询执行。 在 SQLXML 4.0 中,从 SQL Server 2005(9.x)开始,这些组件已被删除为类似且重叠的功能。

或者,可以通过利用 SQLXML 扩展到最初在 Microsoft 数据访问组件(MDAC)2.6 及更高版本中引入的 ActiveX 数据对象(ADO),执行查询并使用基于 COM 的应用程序的 SQLXML 4.0。

本主题演示如何使用 SQLXML 和 ADO 作为 Visual Basic 脚本版(VBScript)应用程序的一部分(具有 .vbs 文件扩展名的脚本)。 它提供初始设置过程,帮助你在 SQLXML 4.0 文档中重新创建和测试查询示例。

创建 SQLXML 4.0 测试脚本

在此过程中,你将创建一个 VBScript (.vbs) 文件 Sqlxml4test.vbs,该文件可用于通过利用 ADO 2.6 及更高版本中的 SQLXML ADO 扩展来执行 SQLXML 查询。

使用 ADO 创建 SQLXML 4.0 查询测试器(VBScript)。

  1. 复制下面的代码并将其粘贴到文本文件中。 将文件另存为 Sqlxml4test.vbs。

    WScript.Echo "Query process may take a few seconds to complete. Please be patient."  
    
    ' Note that for SQL Server Native Client to be used as the data provider,  
    ' it needs to be installed on the client computer first. Also, SQLXML extensions   
    ' for ADO are used and available in MDAC 2.6 or later.  
    
    'Set script variables.  
    inputFile = "@@FILE_NAME@@"  
    strServer = "@@SERVER_NAME@@"  
    strDatabase = "@@DATABASE_NAME@@"  
    dbGuid = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"  
    
    ' Establish ADO connection to SQL Server and   
    ' create an instance of the ADO Command object.  
    Set conn = CreateObject("ADODB.Connection")  
    Set cmd = CreateObject("ADODB.Command")  
    conn.Open "Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI11;Server=" & strServer & _  
              ";Database=" & strDatabase & ";Integrated Security=SSPI"  
    Set cmd.ActiveConnection = conn  
    
    ' Create the input stream as an instance of the ADO Stream object.  
    Set inStream = CreateObject("ADODB.Stream")  
    inStream.Open  
    inStream.Charset = "utf-8"  
    inStream.LoadFromFile inputFile  
    
    ' Set ADO Command instance to use input stream.  
    Set cmd.CommandStream = inStream  
    
    ' Set the command dialect.  
    cmd.Dialect = dbGuid  
    
    ' Set a second ADO Stream instance for use as a results stream.   
    Set outStream = CreateObject("ADODB.Stream")  
    outStream.Open  
    
    ' Set dynamic properties used by the SQLXML ADO command instance.   
    cmd.Properties("XML Root").Value = "ROOT"  
    cmd.Properties("Output Encoding").Value = "UTF-8"  
    
    ' Connect the results stream to the command instance and execute the command.  
    cmd.Properties("Output Stream").Value = outStream  
    cmd.Execute , , 1024  
    
    ' Echo cropped/partial results to console.  
    WScript.Echo Left(outStream.ReadText, 1023)  
    
    inStream.Close  
    outStream.Close  
    
  2. 更新尝试测试和测试环境的示例的以下脚本值。

    • 查找 @@FILE_NAME@@ 并将其替换为模板文件的名称。

    • 查找 @@SERVER_NAME@@ 并将其替换为 SQL Server 实例的名称(例如, (local) 如果 SQL Server 在本地运行)。

    • 查找“@@DATABASE_NAME@@”并将其替换为数据库的名称(例如, AdventureWorks2022tempdb)。

    如果在尝试在计算机上本地重新创建的示例的特定说明中所述,请更新任何其他值。

  3. 保存文件并将其关闭。

  4. 验证是否已创建任何其他文件,如 XML 模板或架构,这些文件是你尝试在计算机上本地重新创建的示例的一部分。 这些文件应位于保存测试脚本文件(Sqlxml4test.vbs)的同一目录中。

  5. 按照下一部分中的说明操作,了解如何使用 SQLXML 4.0 测试脚本。

使用 SQLXML 4.0 测试脚本

以下过程介绍如何使用 Sqlxml4test.vbs 文件测试本文档中提供的示例查询。

使用 SQLXML 4.0 查询测试器

  1. 验证是否已安装 SQL Server Native Client,如下所示:

    1. “开始 ”菜单中,指向 “设置”,然后单击“ 控制面板”。

    2. 在控制面板中,打开 “添加或删除程序”

    3. 在当前已安装的程序列表中,验证 Microsoft SQL Server Native Client 是否显示在列表中。

      注意

      如果需要安装 SQL Server Native Client,请参阅 安装 SQL Server Native Client

  2. 验证为客户端计算机安装的 MDAC 版本是否为 2.6 或更高版本。 如果需要验证 MDAC 版本信息,可以使用可从 Microsoft 网站 http://www.microsoft.com免费下载的 MDAC 组件检查器工具。 有关详细信息,请在 Microsoft 网站上搜索“MDAC 组件检查器”。

  3. 执行该脚本。

    可以使用 Cscript.exe 在命令行上执行 VBScript 文件,也可以双击 Sqlxml4test.vbs 文件来调用 Windows 脚本主机(WScript.exe)。

    执行时,脚本应显示一条消息,提醒你脚本在返回查询结果并将查询结果显示为脚本输出之前可能需要一些时间才能执行。 输出出现时,将其内容与示例的预期结果进行比较。