Buduję niestandardowe narzędzie do wdrażania bazy danych, muszę odczytać pliki tekstowe zawierające skrypty sql i wykonać je w bazie danych.SqlCommand() ExecuteNonQuery() obcina tekst polecenia
Bardzo łatwe rzeczy, na razie tak dobrze.
Jednak spotkałem się z zakleszczeniem, zawartość pliku jest odczytywana pomyślnie i całkowicie, ale po przejściu do SqlCommand, a następnie wykonaniu z SqlCommand.ExecuteNonQuery wykonywana jest tylko część skryptu.
Zainicjowałem program Profiler i potwierdziłem, że mój kod nie przekazuje całego skryptu.
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);
Na jakiej postaci skrócił się skrypt? – MikeWyatt
Jak działa metoda 'ReadFile'? Czy jesteś 200% pewny, że nie omija kilku postaci, może? Dlaczego nie po prostu użyć 'System.IO.File.ReadAllText (filename)' ?? –
jak * dużo * tekst czytasz z pliku, w bajtach? –