我正在構建自定義數據庫部署實用程序,我需要讀取包含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