カスタム db 展開ユーティリティを構築しています。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);