SourceCode/PROMS/DataLoader/SQLScriptRunner.cs
Rich b480a879c5 Sql Script to Build Empty VE-PROMS Database
Use new settings (ConvertTo and ExecutableMode)
New Settings
Use new setting (PDF Folder)
Use and Control new settings
2012-01-13 18:38:41 +00:00

60 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
// Add .Net Reference Microsoft.SqlServer.ConnectionInfo
using Microsoft.SqlServer.Management.Common;
// Add .Net Reference Microsoft.SqlServer.Smo
using Microsoft.SqlServer.Management.Smo;
namespace DataLoader
{
public delegate void SQLScriptRunnerEvent(object sender, SqlInfoMessageEventArgs args);
public class SQLScriptRunner
{
public event SQLScriptRunnerEvent InfoMessage;
public void OnInfoMessage(object sender, SqlInfoMessageEventArgs args)
{
if (InfoMessage != null) InfoMessage(sender, args);
}
private string _Script;
public string Script
{
get { return _Script; }
set { _Script = value; }
}
private string _ConnectionString;
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}
public SQLScriptRunner(string script, string connectionString)
{
_Script = script;
_ConnectionString = connectionString;
}
public SQLScriptRunner(string dbName, string backupFolder, string connectionString, DateTime dateTime, string suffix)
{
_Script = string.Format("Backup database [{0}] to disk = '{1}\\{0}_{2}{3}.BAK'\r\n" +
"GO\r\nPRINT '{0} backed up to {1}\\{0}_{2}{3}.BAK'",
dbName, backupFolder, dateTime.ToString("yyyyMMdd_HHmm"),suffix);
_ConnectionString = connectionString;
}
public void Run()
{
SqlConnection cn = new SqlConnection(ConnectionString);
cn.Open();
cn.InfoMessage += new SqlInfoMessageEventHandler(cn_InfoMessage);
Server srv = new Server(new ServerConnection(cn));
srv.ConnectionContext.ExecuteNonQuery(Script);
cn.Close();
}
void cn_InfoMessage(object sender, SqlInfoMessageEventArgs e)
{
OnInfoMessage(sender, e);
}
}
}