0

1 つのプログラムで呼び出される 2 つのスクリプトがあります。最初のスクリプトはデータベースを作成し、もう 1 つはデータベースを埋めるためのスクリプトです。

2 番目のスクリプトを起動する前に、最初のスクリプトが終了したかどうかを知るにはどうすればよいですか?

プロセスが終了したことを最初に通知する 2 番目のスクリプトを待つ方法は? サーバーはどのようにしてデータベース プログラムの作成を通知し、その後の作業を進めることができますか? コード

文字列 createDatabasePath = args[0];

        sqlConnectionStr = Properties.Settings.Default.conString;
        SqlConnection conn = new SqlConnection(sqlConnectionStr);
        conn.Open();
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        FileInfo file = new FileInfo(createDatabasePath);
        string script = file.OpenText().ReadToEnd();
        script = script.Replace("GO", "");
        comm.CommandText = script;
        comm.ExecuteNonQuery();

私の問題は、executenonquery が終了したときですか?どうすればわかりますか?

4

1 に答える 1

2

「1 つのプログラム内」が何を意味するのかを知る必要があります。それは一連の T-SQL コマンドや C# アプリケーションなどですか? ただし、一方が他方よりも先に実行されるようにする最も簡単な方法は、それらを 1 つの手順に結合するか、最初の手順で 2 番目の手順を呼び出すことです。

...Do the stuff in Process1;
EXEC Process2;

より複雑なオプションは、2 番目のプロセスを変更して、新しいデータベースが存在することを確認し、完了するまでしばらく待つことです。

DECLARE @I INT
SET @I = 0

WHILE @I = 0
BEGIN
    IF OBJECT_ID('NewDB..tblFinalTableCreated') IS NOT NULL 
        SET @I = 1
    ELSE 
        WAITFOR DELAY '00:05:00' --Wait 5 minutes
END

StartProcess2;
于 2012-06-19T16:24:27.977 に答える