IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

使用 IBM Data Studio 的 pureQuery 优化现有的 .NET 应用程序

改善现有的基于 DB2 的 .NET 应用程序的性能和安全性

developerWorks
前一页第 7 页,共 11 页后一页

文档选项

讨论


对本教程的评价

帮助我们改进这些内容


静态地运行 .NET 应用程序的 SQL

将 IBM Data Server Provider for .Net 配置为静态地执行 SQL

配置好捕获的元数据并将它们绑定到数据库包之后,您可以将 IBM Data Server Provider 配置为静态地执行 SQL,方法是将 executionMode 数据库连接属性设置为 STATIC(如果未定义该属性,则默认值为 DYNAMIC)。要确定如何才能静态地处理某个 SQL 语句,Provider 在启动时将检索元数据文件的内容(由 pureQueryXml 属性标识),并将传入的 SQL 请求与之前捕获并映射到数据库包的 SQL 进行匹配。如果查找和映射操作成功,则 Provider 将静态执行 SQL。如果查找失败,则 SQL 将被动态执行。

database=GSDB;executionMode=STATIC;pureQueryXml=c:\myapp.xml

如果您想确定某个 SQL 的执行是动态还是静态的,可以定义连接属性 traceFile 并为它分配一个日志文件。如果日志功能已启用,则 Provider 将记录无法映射到数据库包的 SQL 条目。以下代码显示了一个典型的连接字符串定义,用于在测试过程中验证启动静态 SQL 执行后应用程序的行为符合预期:

database=GSDB;executionMode=STATIC;pureQueryXml=c:\myapp.xml;traceFile=c:\pdqtrace.txt





回页首


静态地运行示例应用程序的 SQL

  1. 打开一个命令行提示窗口,并切换到 C:\Program Files\IBM\SQLLIB\BIN 目录。
  2. 输入以下内容运行应用程序(为便于阅读,添加了一个换行符):
    testconn20.exe "database=GSDB;executionMode=STATIC;pureQueryXml=c:\myapp.xml;
    traceFile=c:\pdqtrace.txt"

    示例应用程序(或您所使用的程序)应该生成与之前相同的输出。让我们来验证所有 SQL 都是静态执行的。

  3. 打开您在 traceFile 属性值中指定的日志文件。如果您执行应用程序的方式与捕获其 SQL 时使用的方式相同,那么您应该能看到类似于图 10 的输出:

    图 10. pureQuery 静态地执行 SQL 的日志文件
    pureQuery 静态地执行 SQL 的日志文件



  4. 让我们尝试未捕获所有的应用程序 SQL 的场景。要模拟此场景,从捕获文件中删除一个捕获的 SQL 语句并返回到应用程序。如果您使用的是自己的应用程序,则跳过以下步骤直接运行未捕获任何 SQL 的应用程序部分。
    1. 打开您指定为 pureQueryXml 属性值的文件,编辑捕获的 SQL。
    2. 找到 [STATEMENTx] 部分,如图 11 所示:

      图 11. 从 pureQuery 捕获文件中删除 SQL 语句
      从 pureQuery 捕获文件中删除 SQL 语句



    3. 现在,删除所有关联的 SQL 元数据条目。由于您未调用 db2cap 绑定实用工具,因此捕获文件和数据库包现在是不同步的。尽管 SQL 出现在数据库包中,但 Data Provider 无法映射传入语句,因为它未出现在元数据文件中。

      图 12. 删除 SQL 元数据后的 pureQuery 捕获文件
      删除 SQL 元数据后的 pureQuery 捕获文件



    4. 保存修改后的捕获文件。
  5. 再次运行应用程序(像上面的步骤 2 那样),并打开日志文件。此时出现一个警告:您删除的(或未捕获的)一个或多个 SQL 语句无法静态地执行。

    图 13. 在 pureQuery 日志文件中显示不匹配的 SQL
    在 pureQuery 日志文件中显示不匹配的 SQL



    在使用 pureQuery 技术静态地运行 SQL 的典型场景中,您现在应该重新运行捕获流程,递归地捕获之前未记录的 SQL。此方法通常适用于在应用程序中添加了新代码的开发周期 。





回页首



前一页第 7 页,共 11 页后一页
    关于 IBM 隐私条约 联系 IBM 使用条款