Première méthode :
1. Si aucun nom logique n'est spécifié lors de l'attachement de la base de données, il sera affiché sous la forme « chemin complet en majuscules » sur SQL2005. Par exemple, lorsque les fichiers de base de données D:MyTest.mdf et D:MyTest.ldf sont attachés au serveur SQL, si aucun nom logique n'est spécifié, ils seront affichés sous la forme « D:MYTEST.MDF » sur SQL2005. À l'heure actuelle, la chaîne de connexion C# est « DataSource=dsName;AttatchDBFilename="D:MyTest.mdf";User ID=id;Password=pw" ;
2. Si un nom logique est spécifié lors de l'attachement de la base de données, il sera affiché comme « nom logique » sur SQL2005. À ce stade, la chaîne de connexion de C# est « DataSource=dsName;AttatchDBFilename="D:MyTest.mdf". ;Catalogue initial =aa_LogicName;ID utilisateur=id;Mot de passe=pw”;
3. Le nom de la base de données jointe ne peut pas être modifié à volonté, sinon des erreurs pourraient facilement se produire.
Deuxième méthode :
chaîne DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
chaîne LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="Serveur=(local);Sécurité intégrée=SSPI;Base de données=maître";
SqlConnection cn=nouveau SqlConnection(strcon);
SqlCommand cmd =nouveau SqlCommand (StrSql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
Code détaillé de la troisième méthode :
utiliser le système ;
en utilisant System.Collections.Generic ;
en utilisant System.Windows.Forms ;
en utilisant System.Data.SqlClient ;
en utilisant System.Data ;
en utilisant System.ServiceProcess ;
espace de noms AdminZJC.DataBaseControl
{
/// <résumé>
/// Classe de contrôle des opérations de base de données
/// </summary>
classe publique DataBaseControl
{
/// <résumé>
/// Chaîne de connexion à la base de données
/// </summary>
chaîne publique ConnectionString ;
/// <résumé>
///Instruction d'opération SQL/procédure stockée
/// </summary>
chaîne publique StrSQL ;
/// <résumé>
/// Instancier un objet de connexion à une base de données
/// </summary>
connexion SqlConnection privée ;
/// <résumé>
/// Instancie un nouvel objet d'opération de base de données Comm
/// </summary>
communication SqlCommand privée ;
/// <résumé>
/// Le nom de la base de données sur laquelle opérer
/// </summary>
chaîne publique DataBaseName ;
/// <résumé>
/// Adresse complète du fichier de base de données
/// </summary>
chaîne publique DataBase_MDF ;
/// <résumé>
/// Adresse complète du fichier journal de la base de données
/// </summary>
chaîne publique DataBase_LDF ;
/// <résumé>
/// Nom du fichier de sauvegarde
/// </summary>
chaîne publique DataBaseOfBackupName ;
/// <résumé>
/// Chemin du fichier de sauvegarde
/// </summary>
chaîne publique DataBaseOfBackupPath ;
/// <résumé>
/// Effectuer des opérations pour créer/modifier des bases de données et des tables
/// </summary>
public void DataBaseAndTableControl()
{
essayer
{
Conn = nouveau SqlConnection(ConnectionString);
Conn.Open();
Comm = nouveau SqlCommand();
Comm.Connection = Conn ;
Comm.CommandText = StrSQL ;
Comm.CommandType = CommandType.Text ;
Comm.ExecuteNonQuery();
MessageBox.Show("Opération de base de données réussie!", "Invite d'informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
attraper (Exception ex)
{
MessageBox.Show(ex.Message, "Invite de message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
enfin
{
Conn.Close();
}
}
/// <résumé>
/// Base de données attachée
/// </summary>
public vide AddDataBase()
{
essayer
{
Conn = nouveau SqlConnection(ConnectionString);
Conn.Open();
Comm = nouveau SqlCommand();
Comm.Connection = Conn ;
Comm.CommandText = "sp_attach_db" ;
Comm.Parameters.Add(new SqlParameter (@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"nomdb"].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("Base de données attachée avec succès", "Invite d'informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
attraper (Exception ex)
{
MessageBox.Show(ex.Message, "Invite de message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
enfin
{
Conn.Close();
}
}
/// <résumé>
/// Base de données séparée
/// </summary>
public void SupprimerDataBase()
{
essayer
{
Conn = nouveau SqlConnection(ConnectionString);
Conn.Open();
Comm = nouveau SqlCommand();
Comm.Connection = Conn ;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter (@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"nomdb"].Value = DataBaseName;
Comm.CommandType = CommandType.StoredProcedure ;
Comm.ExecuteNonQuery();
MessageBox.Show("Séparation de base de données réussie", "Invite d'informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
attraper (Exception ex)
{
MessageBox.Show(ex.Message, "Invite de message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
enfin
{
Conn.Close();
}
}
/// <résumé>
/// Sauvegarder la base de données
/// </summary>
public void BackupDataBase()
{
essayer
{
Conn = nouveau SqlConnection(ConnectionString);
Conn.Open();
Comm = nouveau SqlCommand();
Comm.Connection = Conn ;
Comm.CommandText = "utiliser master; sauvegarder la base de données @dbname sur le disque = @backupname;";
Comm.Parameters.Add(new SqlParameter (@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"nomdb"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter (@"backupname", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Comm.CommandType = CommandType.Text ;
Comm.ExecuteNonQuery();
MessageBox.Show("Sauvegarde de la base de données réussie", "Invite d'informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
attraper (Exception ex)
{
MessageBox.Show(ex.Message, "Invite de message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
enfin
{
Conn.Close();
}
}
/// <résumé>
///Restaurer la base de données
/// </summary>
public void RemplacerDataBase()
{
essayer
{
chaîne BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName ;
Conn = nouveau SqlConnection(ConnectionString);
Conn.Open();
Comm = nouveau SqlCommand();
Comm.Connection = Conn ;
Comm.CommandText = "utiliser master; restaurer la base de données @DataBaseName à partir du disque = @BackupFile avec remplacement;";
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("Base de données restaurée avec succès", "Invite d'informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
attraper (Exception ex)
{
MessageBox.Show(ex.Message, "Invite de message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
enfin
{
Conn.Close();
}
}
}
}
/*
///Exemple d'appel :
#------------------------------------------------ - --Restaurer la base de données---------------------------------------------- -- ------------#
bouton vide privé0_Click (expéditeur de l'objet, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MaBase de Données" ;
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------ - Base de données supplémentaire------------------------------------------------ - ----------#
bouton vide privé1_Click_1 (expéditeur de l'objet, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MaBase de Données" ;
DBC.DataBase_MDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#--------------------------------------------Base de données de sauvegarde------- -- ------------------------------------------------ -- ---------#
bouton vide privé2_Click (expéditeur de l'objet, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MaBase de Données" ;
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#------------------------------------------------------------Base de données séparée-- ---- ----------------------------------------------- ---- --------#
bouton vide privé3_Click (expéditeur de l'objet, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Data Source=(local);User id=sa;Password=123456; Initial Catalog=master";
DBC.DataBaseName = "MaBase de Données" ;
DBC.DeleteDataBase();