Methode eins:
1. Wenn beim Anhängen der Datenbank kein logischer Name angegeben wird, wird dieser in SQL2005 als „vollständiger Pfad in Großbuchstaben“ angezeigt. Wenn beispielsweise die Datenbankdateien D:MyTest.mdf und D:MyTest.ldf an den SQL-Server angehängt werden und kein logischer Name angegeben wird, werden sie in SQL2005 als „D:MYTEST.MDF“ angezeigt. Zu diesem Zeitpunkt lautet die C#-Verbindungszeichenfolge „DataSource=dsName;AttatchDBFilename="D:MyTest.mdf";User ID=id;Password=pw“;
2. Wenn beim Anhängen der Datenbank ein logischer Name angegeben wird, wird dieser in SQL2005 als „logischer Name“ angezeigt. Zu diesem Zeitpunkt lautet die Verbindungszeichenfolge von C# „DataSource=dsName;AttatchDBFilename="D:MyTest.mdf". ;Initial Catalog =aa_LogicName;User ID=id;Password=pw“;
3. Der angehängte Datenbankname kann nicht beliebig geändert werden, da sonst leicht Fehler auftreten können.
Methode zwei:
string DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
string LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="Server=(local);Integrated Security=SSPI;Database=master";
SqlConnection cn=new SqlConnection(strcon);
SqlCommand cmd =new SqlCommand (StrSql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
Methode drei detaillierter Code:
Verwenden des Systems;
mit System.Collections.Generic;
Verwenden von System.Windows.Forms;
Verwenden von System.Data.SqlClient;
Verwenden von System.Data;
Verwenden von System.ServiceProcess;
Namespace AdminZJC.DataBaseControl
{
/// <Zusammenfassung>
/// Klasse zur Steuerung des Datenbankbetriebs
/// </summary>
öffentliche Klasse DataBaseControl
{
/// <Zusammenfassung>
/// Datenbankverbindungszeichenfolge
/// </summary>
öffentliche Zeichenfolge ConnectionString;
/// <Zusammenfassung>
///SQL-Operationsanweisung/gespeicherte Prozedur
/// </summary>
öffentliche Zeichenfolge StrSQL;
/// <Zusammenfassung>
/// Instanziieren Sie ein Datenbankverbindungsobjekt
/// </summary>
private SqlConnection Conn;
/// <Zusammenfassung>
/// Instanziieren Sie ein neues Datenbankoperationsobjekt. Comm
/// </summary>
private SqlCommand Comm;
/// <Zusammenfassung>
/// Der Name der Datenbank, die bearbeitet werden soll
/// </summary>
öffentliche Zeichenfolge DataBaseName;
/// <Zusammenfassung>
/// Vollständige Adresse der Datenbankdatei
/// </summary>
öffentliche Zeichenfolge DataBase_MDF;
/// <Zusammenfassung>
/// Vollständige Adresse der Datenbankprotokolldatei
/// </summary>
öffentliche Zeichenfolge DataBase_LDF;
/// <Zusammenfassung>
/// Name der Sicherungsdatei
/// </summary>
öffentliche Zeichenfolge DataBaseOfBackupName;
/// <Zusammenfassung>
/// Pfad der Sicherungsdatei
/// </summary>
öffentliche Zeichenfolge DataBaseOfBackupPath;
/// <Zusammenfassung>
/// Führen Sie Vorgänge zum Erstellen/Ändern von Datenbanken und Tabellen aus
/// </summary>
public void DataBaseAndTableControl()
{
versuchen
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Datenbankvorgang erfolgreich!", "Informationsaufforderung", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message, „Nachrichtenaufforderung“, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Endlich
{
Conn.Close();
}
}
/// <Zusammenfassung>
/// Angehängte Datenbank
/// </summary>
public void AddDataBase()
{
versuchen
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "sp_attach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar));
Comm.Parameters[@"filename1"].Value = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar));
Comm.Parameters[@"filename2"].Value = DataBase_LDF;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Datenbank erfolgreich angehängt", "Informationsaufforderung", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message, „Nachrichtenaufforderung“, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Endlich
{
Conn.Close();
}
}
/// <Zusammenfassung>
/// Separate Datenbank
/// </summary>
public void DeleteDataBase()
{
versuchen
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Datenbanktrennung erfolgreich", "Informationsaufforderung", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message, „Nachrichtenaufforderung“, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Endlich
{
Conn.Close();
}
}
/// <Zusammenfassung>
/// Datenbank sichern
/// </summary>
public void BackupDataBase()
{
versuchen
{
Conn = new SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "master;backup-Datenbank @dbname auf Festplatte verwenden = @backupname;";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"backupname", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Datenbanksicherung erfolgreich", "Informationsaufforderung", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message, „Nachrichtenaufforderung“, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Endlich
{
Conn.Close();
}
}
/// <Zusammenfassung>
///Datenbank wiederherstellen
/// </summary>
public void ReplacementDataBase()
{
versuchen
{
string BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conn = new SqlConnection(ConnectionString);
Conn.Open();
Comm = new SqlCommand();
Comm.Connection = Conn;
Comm.CommandText = "use master;restore Database @DataBaseName From disk = @BackupFile with replace;";
Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar));
Comm.Parameters[@"DataBaseName"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar));
Comm.Parameters[@"BackupFile"].Value = BackupFile;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Datenbank erfolgreich wiederhergestellt", "Informationsaufforderung", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message, „Nachrichtenaufforderung“, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Endlich
{
Conn.Close();
}
}
}
}
/*
///Aufrufbeispiel:
#------------------------------------------------ - --Datenbank wiederherstellen------------------------------ -- ------------#
private void button0_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:ProgrammeMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------ - Zusätzliche Datenbank------------------------------------------------ - ----------#
private void button1_Click_1(Objektsender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBase_MDF = @"D:ProgrammeMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:ProgrammeMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#------------Datenbank sichern------- -------------------------------------------------- -- ---------#
private void button2_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:ProgrammeMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#-----------------Separate Datenbank-- ---- ---------------------------------------------- ---- --------#
private void button3_Click(object sender, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MyDatabase";
DBC.DeleteDataBase();