到目前为止,这是相当简单的事情,看起来还不错。
然而,我遇到了一个问题,文件的内容被成功地完整读取,但一旦传递给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);
ReadFile
方法是如何工作的?你确定它不会跳过一些字符吗?为什么不直接使用System.IO.File.ReadAllText(filename)
呢? - marc_s