我将尝试在C# Windows应用程序中执行一个脚本(.sql文件)到数据库。该SQL文件包含“GO”语句,这意味着我正在使用SMO对象。
我尝试在发生脚本执行错误时继续执行并记录任何错误。是否有方法可以实现这一点?
以下是我正在使用的代码:
我尝试在发生脚本执行错误时继续执行并记录任何错误。是否有方法可以实现这一点?
以下是我正在使用的代码:
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
ServerConnection svrConnection = new ServerConnection(sqlConnection);
Server server = new Server(svrConnection);
string script = File.ReadAllText("upgradeDatabase.sql");
try
{
server.ConnectionContext.ExecuteNonQuery(script, ExecutionTypes.ContinueOnError);
}
catch (Exception ex)
{
//handling and logging for the errors are done here
}
}
非常感谢您的帮助!
GO nnn
语法。实际上,GO也是可配置的,有些脚本使用;
作为批处理分隔符(别问我为什么...)。例如,请参见https://github.com/rusanu/DbUtilSqlCmd/blob/master/trunk/src/SqlCmd.cs中的`@"^\b*" + BatchDelimiter + @"\b*(\d*)"`。 - Remus Rusanu