私のC#アプリケーションのファイルにあるSQLスクリプトを実行する必要があります。 問題は、異なるデータベースにコマンドを実行するオブジェクトを作成することです。スクリプトでC#SQL Serverスクリプトのデータベース変更の問題
、私は現在のデータベースを変更する必要があるたびに、それは
USE [databasename]
コマンドを使用し、多くのオブジェクトの作品があるので、それはコマンドGO
に多くの時間を使用していますので、私は読んでそのファイルは私がGOコマンドを見つけてデータベース内の文を実行するまで続きます。これまでのところ良いですが、コマンドの実行後、接続は最後のUSE文を無視してデフォルトデータベース(この場合はマスタ)に戻ります。
これは、ファイルを読み込んでスクリプトを実行するために使用するコードです。
using (StreamReader reader = new StreamReader(databaseScriptFile)) { DatabaseFactory.CreateDatabase() Database db = new SqlDatabase(connectionstring); txbuilder = new StringBuilder(); bool lastExecute = true; while (!reader.EndOfStream) { text = reader.ReadLine(); if (text.Trim().ToUpper() != "GO") { lastExecute = false; txbuilder.AppendLine(text); } else { lastExecute = true; db.ExecuteNonQuery(CommandType.Text, txbuilder.ToString()); txbuilder.Length = 0; } } //Make sure that the last sentence is executed if (!lastExecute) db.ExecuteNonQuery(CommandType.Text, txbuilder.ToString()); }
これをacomplishする任意のエレガントかつ簡単な方法があります(それは私がプロファイラで何を得るのです)、それはそれぞれのExecuteNonQueryコマンドの実行sp_reset_conection後に接続をクリアしているようですか?
おかげ
これは 'Enterprise-Library'とは何が関係していますか? –
私はエンタープライズライブラリのデータベースオブジェクトを使用してスクリプトを実行します – DkAngelito