private static void DropDatabase(DatabaseSetupInfo setupInfo) { if (!string.IsNullOrEmpty(setupInfo.DatabaseName) && setupInfo.DatabaseExists()) { using (SqlConnection adminConnection = new SqlConnection(setupInfo.CreateConnectionString(true, false))) { adminConnection.Open(); using (SqlCommand selectCommand = new SqlCommand("SELECT spid from sys.sysprocesses WHERE dbid in (SELECT database_id FROM sys.databases WHERE name=@Name)", adminConnection)) { selectCommand.Parameters.Add("@Name", System.Data.SqlDbType.VarChar).Value = setupInfo.DatabaseName; DataTable processIdsTable = new DataTable(); SqlDataAdapter processIdsAdapter = new SqlDataAdapter(selectCommand); processIdsAdapter.Fill(processIdsTable); using (SqlCommand killCommand = new SqlCommand("", adminConnection)) { foreach (DataRow dRow in processIdsTable.Rows) { killCommand.CommandText += string.Format("KILL {0};\r\n", dRow[0]); } killCommand.CommandText += string.Format("DROP DATABASE [{0}]", setupInfo.DatabaseName); killCommand.ExecuteNonQuery(); } } } } }
private static bool CreateDatabase(DatabaseSetupInfo setupInfo, string createDatabaseObjectsSql, KeyValuePair <string, string>[] lookupDataArray) { if (!setupInfo.DatabaseExists()) { using (SqlConnection adminConnection = new SqlConnection(setupInfo.CreateConnectionString(true, false))) { adminConnection.Open(); using (SqlCommand createCommand = new SqlCommand(string.Format("CREATE DATABASE [{0}]", setupInfo.DatabaseName), adminConnection)) { createCommand.ExecuteNonQuery(); } } return(true); } else { return(false); } }