我正在构建一个自定义数据库部署实用程序,我需要读取包含 sql 脚本的文本文件并针对数据库执行它们。
很简单的东西,到目前为止一切都很好。
但是我遇到了一个障碍,文件的内容被成功且完整地读取,但是一旦传递到 SqlCommand 然后用 SqlCommand.ExecuteNonQuery 执行,只有部分脚本被执行。
我启动了 Profiler 并确认我的代码没有通过所有脚本。
private void ExecuteScript(string cmd, SqlConnection sqlConn, SqlTransaction trans)
{
SqlCommand sqlCmd = new SqlCommand(cmd, sqlConn, trans);
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandTimeout = 9000000; // for testing
sqlCmd.ExecuteNonQuery();
}
// I call it like this, readDMLScript contains 543 lines of T-SQL
string readDMLScript = ReadFile(dmlFile);
ExecuteScript(readDMLScript, sqlConn, trans);