我们正在使用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中是否有任何设置可以检查脚本执行是否成功。
谢谢。
答案 0 :(得分:0)
您应该考虑使用JDBC连接来应用您的sql,它将引发异常,您可以捕获并处理许多类型的问题并进行不同类型的日志记录。