我正在构建自定义数据库部署实用程序,我需要读取包含sql脚本的文本文件并对数据库执行它们。SqlCommand()ExecuteNonQuery()截断命令文本
很容易的东西,迄今为止很好。
但是我遇到了一个障碍,文件的内容被成功完全读取,但一旦传入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);
脚本截断了什么字符? – MikeWyatt 2010-03-16 17:21:51
'ReadFile'方法是如何工作的?你是200%确定它不会跳过几个字符,也许?为什么不使用'System.IO.File.ReadAllText(filename)'? – 2010-03-16 17:24:42
你从文件中读取多少*文本,以字节为单位? – 2010-03-16 17:32:18