Método um:
1. Se nenhum nome lógico for especificado ao anexar o banco de dados, ele será exibido como "caminho completo em letras maiúsculas" no SQL2005. Por exemplo, quando os arquivos de banco de dados D:MyTest.mdf e D:MyTest.ldf são anexados ao servidor SQL, se nenhum nome lógico for especificado, eles serão exibidos como "D:MYTEST.MDF" no SQL2005. Neste momento, a cadeia de conexão C# é "DataSource=dsName;AttatchDBFilename="D:MyTest.mdf";User ID=id;Password=pw";
2. Se um nome lógico for especificado ao anexar o banco de dados, ele será exibido como "nome lógico" no SQL2005. Neste momento, a string de conexão do C# é "DataSource=dsName;AttatchDBFilename="D:MyTest.mdf". ;Catálogo inicial =aa_LogicName;ID do usuário=id;Senha=pw”;
3. O nome do banco de dados anexado não pode ser alterado à vontade; caso contrário, poderão ocorrer erros facilmente;
Método dois:
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="Servidor=(local);Segurança Integrada=SSPI;Banco de Dados=mestre";
SqlConnection cn=new SqlConnection(strcon);
SqlCommand cmd = novo SqlCommand (StrSql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Fechar();
Método três código detalhado:
usando o sistema;
usando System.Collections.Generic;
usando System.Windows.Forms;
usando System.Data.SqlClient;
usando System.Data;
usando System.ServiceProcess;
namespace AdminZJC.DataBaseControl
{
/// <resumo>
/// Classe de controle de operação do banco de dados
/// </sumário>
classe pública DataBaseControl
{
/// <resumo>
///String de conexão do banco de dados
/// </sumário>
string pública ConnectionString;
/// <resumo>
///instrução de operação SQL/procedimento armazenado
/// </sumário>
string pública StrSQL;
/// <resumo>
/// Instancia um objeto de conexão de banco de dados
/// </sumário>
conexão SqlConnection privada;
/// <resumo>
/// Instancia um novo objeto de operação de banco de dados Comm
/// </sumário>
comando SqlCommand privado;
/// <resumo>
/// O nome do banco de dados a ser operado
/// </sumário>
string pública NomeBaseDeDados;
/// <resumo>
/// Endereço completo do arquivo do banco de dados
/// </sumário>
string pública DataBase_MDF;
/// <resumo>
/// Endereço completo do arquivo de log do banco de dados
/// </sumário>
string pública DataBase_LDF;
/// <resumo>
///Nome do arquivo de backup
/// </sumário>
string pública DataBaseOfBackupName;
/// <resumo>
/// Caminho do arquivo de backup
/// </sumário>
string pública DataBaseOfBackupPath;
/// <resumo>
/// Executa operações para criar/modificar bancos de dados e tabelas
/// </sumário>
public void DataBaseAndTableControl()
{
tentar
{
Conexão = new SqlConnection(ConnectionString);
Conexão.Open();
Comm = new SqlCommand();
Comm.Conexão = Conexão;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Operação de banco de dados bem-sucedida!", "Prompt de informações", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pegar (exceção ex)
{
MessageBox.Show(ex.Message, "Prompt de mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexão.Fechar();
}
}
/// <resumo>
/// Banco de dados anexado
/// </sumário>
public void AddDataBase()
{
tentar
{
Conexão = new SqlConnection(ConnectionString);
Conexão.Open();
Comm = new SqlCommand();
Comm.Conexão = Conexão;
Comm.CommandText = "sp_attach_db";
Comm.Parameters.Add(new SqlParameter(@"nomedb", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"nomedoarquivo1", SqlDbType.NVarChar));
Comm.Parameters[@"nomedoarquivo1"].Valor = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"nomedoarquivo2", SqlDbType.NVarChar));
Comm.Parameters[@"nomedoarquivo2"].Valor = DataBase_LDF;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Banco de dados anexado com sucesso", "Prompt de informações", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pegar (exceção ex)
{
MessageBox.Show(ex.Message, "Prompt de mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexão.Fechar();
}
}
/// <resumo>
/// Banco de dados separado
/// </sumário>
public void DeleteDataBase()
{
tentar
{
Conexão = new SqlConnection(ConnectionString);
Conexão.Open();
Comm = new SqlCommand();
Comm.Conexão = Conexão;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter(@"nomedb", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Separação de banco de dados bem-sucedida", "Prompt de informações", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pegar (exceção ex)
{
MessageBox.Show(ex.Message, "Prompt de mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexão.Fechar();
}
}
/// <resumo>
///Fazer backup do banco de dados
/// </sumário>
public void BackupDataBase()
{
tentar
{
Conexão = new SqlConnection(ConnectionString);
Conexão.Open();
Comm = new SqlCommand();
Comm.Conexão = Conexão;
Comm.CommandText = "usar master;backup banco de dados @dbname para disco = @backupname;";
Comm.Parameters.Add(new SqlParameter(@"nomedb", 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("Backup de banco de dados bem-sucedido", "Prompt de informações", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pegar (exceção ex)
{
MessageBox.Show(ex.Message, "Prompt de mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexão.Fechar();
}
}
/// <resumo>
///Restaura banco de dados
/// </sumário>
público vazio SubstituirDataBase()
{
tentar
{
string BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conexão = new SqlConnection(ConnectionString);
Conexão.Open();
Comm = new SqlCommand();
Comm.Conexão = Conexão;
Comm.CommandText = "usar master; restaurar banco de dados @DataBaseName From disk = @BackupFile com substituição;";
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("Banco de dados restaurado com sucesso", "Prompt de informações", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
pegar (exceção ex)
{
MessageBox.Show(ex.Message, "Prompt de mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexão.Fechar();
}
}
}
}
/*
///Exemplo de chamada:
#------------------------------------------------ - --Restaurar banco de dados --------------------------------------------------------- -----------------#
private void button0_Click (objeto remetente, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Fonte de dados=(local);ID do usuário=sa;Senha=123456; Catálogo inicial=mestre";
DBC.DataBaseName = "MeuBancoDeDados";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Arquivos de ProgramasMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------ - Banco de dados adicional------------------------------------------------ -----------#
private void button1_Click_1(objeto remetente, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Fonte de dados=(local);ID do usuário=sa;Senha=123456; Catálogo inicial=mestre";
DBC.DataBaseName = "MeuBancoDeDados";
DBC.DataBase_MDF = @"D:Arquivos de ProgramasMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Arquivos de ProgramasMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#------------------------------------------------------Banco de dados de backup------- -------------------------------------------------- -------------#
private void button2_Click (objeto remetente, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Fonte de dados=(local);ID do usuário=sa;Senha=123456; Catálogo inicial=mestre";
DBC.DataBaseName = "MeuBancoDeDados";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Arquivos de ProgramasMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#-----------------------------------------------------------Banco de dados separado-- ---- ---------------------------------------------- ---- --------#
private void button3_Click (objeto remetente, EventArgs e)
{
DataBaseControl DBC = new DataBaseControl();
DBC.ConnectionString = "Fonte de dados=(local);ID do usuário=sa;Senha=123456; Catálogo inicial=mestre";
DBC.DataBaseName = "MeuBancoDeDados";
DBC.DeleteDataBase();