WEB开发网
开发学院数据库MSSQL Server 使用 SQL Server 2005 中的 SQLCLR 处理 XML Show... 阅读

使用 SQL Server 2005 中的 SQLCLR 处理 XML Showplan

 2007-05-13 09:24:45 来源:WEB开发网   
核心提示: 5.通过输出参数 @cost 将该查询的估计执行成本返回到客户端,如步骤 4 中的代码示例所示,使用 SQL Server 2005 中的 SQLCLR 处理 XML Showplan(5),6.客户端可根据 @cost 的值,选择是否将该查询提交到 SQL Server 来加以执行,CL

5.

通过输出参数 @cost 将该查询的估计执行成本返回到客户端。如步骤 4 中的代码示例所示。

6.

客户端可根据 @cost 的值,选择是否将该查询提交到 SQL Server 来加以执行,如步骤 4 中的代码所示。

图 2. 执行 CLR 存储过程的示意处理步骤

图 2 显示执行存储过程的主要步骤,详细描述如下:

1.

一旦调用该过程,它就会接收到一个成本有待估计的查询。

2.

CLR 存储过程将 SHOWPLAN_XML 模式设置为 ON。不执行提交到该连接的任何语句;然而,将为这些语句生成 showplan。将该查询本身发送到 SQL Server。

3.

该服务器以 XML 格式逐段返回此 showplan,然后 Visual C# 程序将这些片段整理在一起。

4.

该过程将 SHOWPLAN_XML 模式设置为 OFF。

5.

CLR 存储过程准备并以 XML 格式在 showplan 上执行一个 XPath 表达式,以提取查询成本。该批处理中每条语句中的每个查询计划的成本均被提取并总计。

6.

估计查询执行成本返回到调用程序中。如果 SQL 代码中出现错误,则返回“-1”作为成本。

注 DLL 与 SQL Server 之间的通信称为进程内数据访问,这是因为已将该 DLL 链接到 SQL Server 进程。由于已将 DLL 动态链接到该 SQL Server 进程,因此交换数据并不跨越 SQL Server 进程边界。当执行进程内数据访问时,只能将 XPath 查询发送到 SQL Server;XQuery 查询不能使用进程内数据访问。

解决方案 2:使用 CLR 存储过程和 XQuery 表达式提取查询成本

该解决方案循序渐进的过程与前面的解决方案(解决方案 1)类似,但还存在一些重要区别。在解决方案 2 中,CLR 存储过程以 XML 格式为给定的查询返回 showplan,而无需做进一步的处理。客户端使用 XQuery 表达式从返回的 XML showplan 中提取估计查询成本。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接