1.4 通过Internet访问SQL Server
实例020 建立访问SQL Server 2000的虚拟目录
这是一个提高基础技能的实例
实例说明
本实例介绍如何建立访问SQL Server 2000的虚拟目录。
技术要点
在使用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的一部分,必须创建template、schema和dbobject类型的虚拟名称。将虚拟名称指定为URL的一部分,以便执行模板文件,对映射架构文件执行XPath查询或直接访问数据库。
在URL中指定的虚拟名称类型(template、schema、dbobject)还用于决定在URL中指定的文件类型(模板文件或映射架构文件)。例如,下面的URL使用模板访问SQL Server数据库:
http://IISServer/nwind/TemplateVirtualName/Template.xml
TemplateVirtualName是template类型的虚拟名称,用于标识指定的文件(Template.xml)是模板文件。
实现过程
在创建访问SQL Server 2000的虚拟目录之前,需要一个与将要创建的虚拟目录相关联的物理目录(例如C:\Inetpub\Wwwtoot\nwind,此处nwind是与将要在以下过程中创建的nwind虚拟目录相关联的物理目录)。
还需要在与该虚拟目录相关联的物理目录下创建两个子目录(例如C:\Inetpub\wwwroot\nwind\template和C:\Inetpub\wwwroot\nwind\schema)。
下面建立访问SQL Server 2000的虚拟目录,具体操作步骤如下。
(1)依次单击“开始”→“程序”→Microsoft SQL Server→“在IIS中配置SQL XML支持”,打开“对SQL Server的IIS虚拟目录管理”对话框。
(2)在“对Sql Server的IIS虚拟目录管理”对话框的左侧栏中,展开服务器,然后单击想要的Web站点。
(3)依次单击“操作”→“新建”→“虚拟目录”,打开“新建虚拟目录”对话框,如图1.129所示。
图1.129 “常规”选项卡
(4)在“新建虚拟目录”对话框的“常规”选项卡上,输入虚拟目录的名称,这里为nwind,在“本地路径”文本框中,单击“浏览”按钮,输入物理目录路径(如C:\Inetpub\Wwwroot\nwid,假设C:\Inetpub\Wwwroot目录中已创建了nwind子目录)。
(5)切换到“安全性”选项卡,选中“SQL Server”选项并输入有效的SQL Server登录信息,这里用户名为“sa”,密码为空,如图1.130所示,当进入下一个选项卡时,需要对输入的密码进行确认。
图1.130 “安全”选项卡
(6)切换到“数据源”选项卡,如图1.131所示。在SQL Server文本框中,输入服务器的名称,例如local,如果在指定的计算机上安装了多个实例,则单击按钮选择或输入SQL Server 2000实例的名称。在“数据库”下拉列表中选择或输入数据库名称,这里为pubs。
图1.131 “数据源”选项卡
(7)切换到“设置”选项卡,选择“允许URL查询”、“允许模板查询”、“允许XPath”和“允许POST”复选框,如图1.132所示。
图1.132 “设置”选项卡
(8)切换到“虚拟名称”选项卡,单击“新建”按钮创建模板类型的虚拟名称。
(9)在打开的“虚拟名称配置”对话框中,首先在“虚拟名称”文本框中输入mytemplate(可以是用户指定的任意名称),然后在“类型”下拉列表中选择模板类型,这里选择template。单击按钮选择或在“路径”文本框中输入路径(例如C:\Inetpub\wwwroot\nwind\template,假设与虚拟目录相关联的物理目录下有一个子目录template,但并不检查该目录是否存在),如图1.133所示,最后单击“保存”按钮保存虚拟名称。
图1.133 创建模板类型的虚拟名称
(10)返回到“虚拟名称”选项卡,单击“新建”按钮创建架构类型的虚拟名称。
(11)在打开的“虚拟名称配置”对话框中,首先在“虚拟名称”文本框内输入myschema(可以是用户指定的任意名称),然后在“类型”下拉列表中选择schema。单击按钮选择或在“路径”文本框中输入路径(例如C:\Inetpub\wwwroot\nwind\schema,假设与虚拟目录相关联的物理目录下有一个子目录schema,但并不检查该目录是否存在),如图1.134所示,最后单击“保存”按钮保存虚拟名称。
图1.134 创建架构类型的虚拟名称
(12)返回到“虚拟名称”选项卡,单击“新建”按钮创建模板和架构类型的虚拟名称。
(13)在打开的“虚拟名称配置”对话框中,在“虚拟名称”文本框内输入mydbobject(可以是用户指定的任意名称),然后在“类型”下拉列表中选择dbobject,如图1.135所示,最后单击“保存”按钮保存虚拟名称。
图1.135 创建模板和架构类型的虚拟名称
以上设置完成后,就成功地创建了访问SQL Server 2000的虚拟目录nwind。默认情况下,使用该虚拟目录对pubs数据库执行指定的查询。
测试虚拟目录,在浏览器的URL中输入如下内容:
http://localhost/nwind/template/mytemplate.xml
按Enter键,显示查询结果。
举一反三
根据本实例,读者可以:
使用对象模型创建虚拟目录。
实例021 通过HTTP访问SQL Server
这是一个方便查询的实例
实例位置:光盘\mingrisoft\01\021
实例说明
本实例介绍如何通过HTTP访问SQL Server。
技术要点
可以使用HTTP访问Microsoft SQL Server。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"]
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)以释放资源。
实现过程
下面将通过HTTP访问SQL Server数据库BookManage并显示图书表tb_bookinfo中的数据,具体操作步骤如下。
在IE浏览器的地址栏中输入如下语句:
http://localhost/mrsoft?sql=select from tb_bookinfo FOR XML AUTO&root=root
查询结果如图1.136所示。
图1.136 通过HTTP访问SQL Server 2000
举一反三
根据本实例,读者可以:
使用XML模板查询。
实例022 通过Microsoft Proxy Server连接SQL Server
这是一个提高安全性的实例
实例说明
本实例介绍如何通过Microsoft Proxy Server(代理服务器)连接SQL Server 2000。
技术要点
通过Microsoft代理服务器这个提供安全数据访问的独立程序连接到Microsoft SQL Server实例,可以防止未经授权的用户连接到专用网络。这样就控制了对监听端口的权限和访问,保证了敏感数据的安全。Microsoft代理服务器与Microsoft Windows Server用户身份验证集成在一起。可以按IP地址范围、域或个别用户来阻断对受限站点的访问,以确保用户适当地使用其Internet权限。
实现过程
(1)依次选择“开始”→“程序”→“Microsoft SQL Server”→“SQL Server网络实用工具”。
(2)如果在“启用的协议”下没有出现TCP/IP,则在“禁用的协议”下单击它,然后单击“启用”,否则跳到步骤(3)。
(3)在“启用的协议”下单击TCP/IP,然后单击“属性”。
(4)确认端口是正确的。