同步SQL Server和程序

时间:2012-06-19 14:55:39

标签: c# sql-server c#-4.0 sql-server-ce console-application

我有两个在一个程序中调用的脚本,第一个脚本创建一个数据库,另一个是填充数据库的脚本。

如何在启动第二个脚本之前知道第一个脚本是否已完成?

如何等待第一个进程结束的第一个脚本?服务器如何通知创建数据库程序然后继续进一步工作? 代码

string 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();

我的问题是当执行死刑的时候?我怎么知道?

1 个答案:

答案 0 :(得分:2)

我们需要知道“在一个程序中”意味着什么 - 是一组T-SQL命令还是C#应用程序等?但是,确保一个在另一个之前完成的最简单方法是将它们组合成一个程序,或者让第一个程序调用第二个程序:

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

更复杂的选项是更改第二个进程以检查新数据库是否存在并且等待一段时间直到它完成:

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;