C# 同步SQL Server和程序

C# 同步SQL Server和程序,c#,sql-server,c#-4.0,sql-server-ce,console-application,C#,Sql Server,C# 4.0,Sql Server Ce,Console Application,我在一个程序中调用了两个脚本,第一个脚本创建数据库,另一个脚本填充数据库 如何在启动第二个脚本之前知道第一个脚本是否已完成 如何等待第二个脚本通知第一个进程结束?服务器如何通知数据库程序的创建,然后继续进一步的工作? 代码 字符串createDatabasePath=args[0] sqlConnectionStr = Properties.Settings.Default.conString; SqlConnection conn = new SqlConnec

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

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

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

字符串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();
我的问题是ExecuteOnQuery何时完成?我如何知道?

我们需要知道“在一个程序中”是什么意思-是一组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;

你能发布一些代码让我们看看你的脚本是如何被调用的吗?向数据库发送两个请求。首先是
DDL
,然后是
Console.Writeline(“第一个进程结束”)
现在发送第二个请求,请求
DML
。明白了-我看到您只是在使用存储在文件中的T-SQL脚本,但是上面的进程2应该仍然可以工作,只是在C中。检查如何检查数据库或表是否存在,然后将其放入与上面相同的基本循环中:do{Check if table exists,if so so set@i to 1}while(@i 1)。