跟踪使用Java在SQL Server DB上执行SQL文件时是否发生任何错误

时间:2018-10-24 07:46:31

标签: java sql-server sqlcmd

我们正在使用Java在SQL Server DB上执行sql文件,如下所示。

sqlcommand = "cmd.exe /c cd  C:\\C\\Test  && ECHO Y | CALL sqlcmd -S ServerName -Usa -P Pwd -d DBName -i "+sqlFile+" -o "+sqlOutputFileName;

Process p = Runtime.getRuntime().exec(sqlcommand);
int processValue = p.waitFor();

这会将输出写入日志文件。

现在,我们正在读取此日志文件,以检查脚本执行是否成功而没有任何错误。如果有任何错误,我们必须停止执行下一个sql文件。为此,我们正在读取输出文件的每一行并检查以下条件

if(line.contains("Msg") && line.contains("State")&& line.contains("Line")){
  scriptFailed = true;
  break;
}

我们的假设是,每当出现任何错误时,输出文件中都会明确包含以下标记,例如消息,级别,状态,行等。以下示例错误

Msg 207, Level 16, State 1, Server ServerName, Line 3
Invalid column name 'MAT_COD'. 

这足以检查脚本执行是否成功。如果还有其他条件,请告诉我们。

此外,sqlcmd中是否有任何设置可以检查脚本执行是否成功。

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该考虑使用JDBC连接来应用您的sql,它将引发异常,您可以捕获并处理许多类型的问题并进行不同类型的日志记录。

https://docs.oracle.com/javase/tutorial/jdbc/basics/