让C#程序批量直接执行sql脚本文件

时间:2022-01-10 07:44:47

让C#程序直接执行sql脚本文件,类似SSMS直接打开sql文件并执行一样,需要借用mssql的几个类库及命名空间:

 

vs2010在引用里无法找到这两个类库,那我们就想办法找到它,首先我电脑安装了mssqlserver2008 ,

我去X:\Program Files\Microsoft SQL Server\100\SDK\Assemblies 找到

Microsoft.SqlServer.ConnectionInfo.dll

Microsoft.SqlServer.Smo.dll

Microsoft.SqlServer.Management.Sdk.Sfc.dll(这个一定要考到你的程序目录,但你可以不引用)

然后手动添加应用,第三个dll一定要引用,不然会报错

方法代码如下(传入的sql内容可以从SQL脚本文件直接通过文件流的方式直接读出来,语句有GO也兼容):

public static bool ExceSQL(string sql, string constr,ref string logtxt)
        {
            bool isBuild = false;
            logtxt = "ExceSQL Finished,sql count:0.";
            try
            {
               // string connectonstring = "data source=10.1.8.188;initial catalog=WAPPDB;user id=sa;password=mindray99!";
                SqlConnection conn = new SqlConnection(constr);
                Microsoft.SqlServer.Management.Smo.Server server = new Server(new ServerConnection(conn));
                int i = server.ConnectionContext.ExecuteNonQuery(sql);
                if (i > 0)
                {
                    isBuild = true;
                    logtxt = "ExceSQL Success,sql count:" + (0 - i).ToString()+".";
                }
            }
            catch (Exception ex)
            {
                logtxt = "ExceSQL Failed - " + ex.Message;
                Logs.Error("ExceSQL Failed - " + ex.Message);
            }
            return isBuild;
        }