【问题标题】:Checking for DB2 Connection before running next SQL script在运行下一个 SQL 脚本之前检查 DB2 连接
【发布时间】:2014-06-26 22:31:36
【问题描述】:

我想在运行 SQL 文件之前检查是否存在 DB2 连接。

解释一下:

@echo off
if "%DB2CLP%" == "" db2cmd /c /i /w "%0" %* & goto :eof
SET DB2CLP=**$$**
db2 -x connect to XXXXX user XXXXXXXX USING XXXXXXXX
db2 -x set current schema='XXXXXXXX'
db2 -tvsmf query1.sql
db2 -tvsmf query2.sql
db2 -tvsmf query3.sql

我需要在运行三个查询之前检查是否存在数据库连接,如果不存在则再次运行登录脚本。

这可能吗?

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。不要忘记女性也编码。您可以突出显示您的代码并单击{} 按钮将其标记。为什么你需要这样做?这感觉就像你在治疗症状而不是根本原因。如果您的连接被断开,修复会不会更好?

标签: sql batch-file db2


【解决方案1】:

可以不带参数发出connect命令,查看返回码;如果发生错误,DB2 CLP 返回 4。

db2 connect >nul
if errorlevel 0 goto :label1
db2 connect to XXX...
:label 1
db2 -tf query1.sql

但是,请记住,这并不能保证在所有情况下都有效。例如,如果网络连接中断,则数据库连接将保持有效状态,直到您发出下一条 SQL 语句,此时将返回错误。出于这个原因,您可能希望选择运行一些保证工作的查询,而不是 connect 命令,以“ping”数据库服务器:

db2 select 1 from sysibm.sysdummy1 >nul
if errorlevel 0 goto :label1
db2 connect to XXX...
:label 1
db2 -tf query1.sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2014-07-15
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多