방법 1:
1. 데이터베이스 연결 시 논리적 이름을 지정하지 않으면 SQL2005에서 "전체 경로는 대문자"로 표시됩니다. 예를 들어 데이터베이스 파일 D:MyTest.mdf 및 D:MyTest.ldf가 SQL Server에 연결된 경우 논리적 이름이 지정되지 않으면 SQL2005에서 "D:MYTEST.MDF"로 표시됩니다. 이때 C# 연결 문자열은 "DataSource=dsName;AttachDBFilename="D:MyTest.mdf";User ID=id;Password=pw"; 입니다.
2. 데이터베이스 연결 시 논리적 이름을 지정하면 SQL2005에서는 "논리적 이름"으로 표시됩니다. 이때 C#의 연결 문자열은 "DataSource=dsName;AttachDBFilename="D:MyTest.mdf"입니다. ;초기 카탈로그 =aa_LogicName;사용자 ID=id;비밀번호=pw”;
3. 첨부된 데이터베이스 이름은 마음대로 변경할 수 없습니다. 그렇지 않으면 오류가 발생하기 쉽습니다.
방법 2:
문자열 DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
문자열 LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="서버=(로컬);통합 보안=SSPI;데이터베이스=마스터";
SqlConnection cn=new SqlConnection(strcon);
SqlCommand cmd =new SqlCommand(StrSql,cn);
cn.열기();
cmd.ExecuteNonQuery();
cn.닫기();
방법 3의 세부 코드:
시스템 사용;
System.Collections.Generic을 사용합니다.
System.Windows.Forms 사용;
System.Data.SqlClient 사용;
System.Data 사용;
System.ServiceProcess 사용;
네임스페이스 AdminZJC.DataBaseControl
{
/// <요약>
/// 데이터베이스 연산 제어 클래스
/// </summary>
공개 클래스 DataBaseControl
{
/// <요약>
/// 데이터베이스 연결 문자열
/// </summary>
공개 문자열 ConnectionString;
/// <요약>
///SQL 연산문/저장 프로시저
/// </summary>
공개 문자열 StrSQL;
/// <요약>
/// 데이터베이스 연결 개체 인스턴스화
/// </summary>
개인 SqlConnection 연결;
/// <요약>
/// 새로운 데이터베이스 작업 개체를 인스턴스화합니다.
/// </summary>
개인 SqlCommand 통신;
/// <요약>
/// 작업할 데이터베이스 이름
/// </summary>
공개 문자열 DataBaseName;
/// <요약>
/// 데이터베이스 파일의 전체 주소
/// </summary>
공개 문자열 DataBase_MDF;
/// <요약>
/// 데이터베이스 로그 파일의 전체 주소
/// </summary>
공개 문자열 DataBase_LDF;
/// <요약>
/// 백업 파일명
/// </summary>
공개 문자열 DataBaseOfBackupName;
/// <요약>
/// 백업 파일 경로
/// </summary>
공개 문자열 DataBaseOfBackupPath;
/// <요약>
/// 데이터베이스 및 테이블을 생성/수정하는 작업을 수행합니다.
/// </summary>
공공 무효 DataBaseAndTableControl()
{
노력하다
{
콘 = new SqlConnection(ConnectionString);
Conn.Open();
통신 = 새로운 SqlCommand();
Comm.Connection = 콘;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("데이터베이스 작업이 성공했습니다!", "정보 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
잡기 (예외예외)
{
MessageBox.Show(ex.Message, "메시지 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
마지막으로
{
연결.닫기();
}
}
/// <요약>
/// 연결된 데이터베이스
/// </summary>
공공 무효 AddDataBase()
{
노력하다
{
콘 = new SqlConnection(ConnectionString);
Conn.Open();
통신 = 새로운 SqlCommand();
Comm.Connection = 콘;
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("데이터베이스가 성공적으로 연결되었습니다.", "정보 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
잡기 (예외예외)
{
MessageBox.Show(ex.Message, "메시지 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
마지막으로
{
연결.닫기();
}
}
/// <요약>
/// 별도의 데이터베이스
/// </summary>
공공 무효 DeleteDataBase()
{
노력하다
{
콘 = new SqlConnection(ConnectionString);
Conn.Open();
통신 = 새로운 SqlCommand();
Comm.Connection = 콘;
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("데이터베이스 분리 성공", "정보 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
잡기 (예외예외)
{
MessageBox.Show(ex.Message, "메시지 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
마지막으로
{
연결.닫기();
}
}
/// <요약>
/// 데이터베이스 백업
/// </summary>
공공 무효 BackupDataBase()
{
노력하다
{
콘 = new SqlConnection(ConnectionString);
Conn.Open();
통신 = 새로운 SqlCommand();
Comm.Connection = 콘;
Comm.CommandText = "마스터 사용; 데이터베이스 @dbname을 디스크에 백업 = @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("데이터베이스 백업 성공", "정보 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
잡기 (예외예외)
{
MessageBox.Show(ex.Message, "메시지 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
마지막으로
{
연결.닫기();
}
}
/// <요약>
///데이터베이스 복원
/// </summary>
공공 무효 교체DataBase()
{
노력하다
{
문자열 BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
콘 = new SqlConnection(ConnectionString);
Conn.Open();
통신 = 새로운 SqlCommand();
Comm.Connection = 콘;
Comm.CommandText = "마스터 사용; 데이터베이스 복원 @DataBaseName 디스크에서 = @BackupFile을 교체;";
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 = 백업파일;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("데이터베이스가 성공적으로 복원되었습니다.", "정보 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
잡기 (예외예외)
{
MessageBox.Show(ex.Message, "메시지 프롬프트", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
마지막으로
{
연결.닫기();
}
}
}
}
/*
///호출 예시:
#------------------------------------------------ - --데이터베이스 복원--------------------- -- ------------#
개인 무효 버튼0_Click(객체 전송자, EventArgs e)
{
DataBaseControl DBC = 새로운 DataBaseControl();
DBC.ConnectionString = "데이터 소스=(로컬);사용자 ID=sa;비밀번호=123456; 초기 카탈로그=마스터";
DBC.DataBaseName = "내 데이터베이스";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------ - 추가 데이터베이스------------------------------------------------ - ----------#
개인 무효 버튼1_Click_1(객체 전송자, EventArgs e)
{
DataBaseControl DBC = 새로운 DataBaseControl();
DBC.ConnectionString = "데이터 소스=(로컬);사용자 ID=sa;비밀번호=123456; 초기 카탈로그=마스터";
DBC.DataBaseName = "내 데이터베이스";
DBC.DataBase_MDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#---------------데이터베이스 백업------- -- ------------------------------------------------ -- ---------#
개인 무효 버튼2_Click(객체 전송자, EventArgs e)
{
DataBaseControl DBC = 새로운 DataBaseControl();
DBC.ConnectionString = "데이터 소스=(로컬);사용자 ID=sa;비밀번호=123456; 초기 카탈로그=마스터";
DBC.DataBaseName = "내 데이터베이스";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#---------------------별도의 데이터베이스-- ---- --------------------------------- ---- --------#
개인 무효 버튼3_Click(객체 전송자, EventArgs e)
{
DataBaseControl DBC = 새로운 DataBaseControl();
DBC.ConnectionString = "데이터 소스=(로컬);사용자 ID=sa;비밀번호=123456; 초기 카탈로그=마스터";
DBC.DataBaseName = "내 데이터베이스";
DBC.DeleteDataBase();