让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; }