C#에서 프로젝트를 개발 중입니다. SMO를 사용하여 C# 코드에서 SQL Server 데이터베이스를 분리 한 다음 연결하려고합니다. 나는 데이터베이스를 분리 할 수 있습니다,하지만 난 그것을 첨부 할 때 오류가 발생합니다C#에서 SQL Server 데이터베이스 연결
실제 파일을 열 수 없습니다 "C : \ 프로그램 Files \ Microsoft SQL 서버 \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA의 \의 ghale합니다. mdf ". 운영 체제 오류 5 : "5 (액세스가 거부되었습니다.)".
코드 : 당신은 Ctrl + Alt + 삭제 키를 누르면
OpenFileDialog f = new OpenFileDialog();
f.Title = "sqlbakcup";
f.FileName = "";
f.Filter = @"SQL Backup files (*.BAK) |*.BAK|All files(*.*) |*.*";
if (f.ShowDialog() == DialogResult.OK)
{
SqlConnection sqlconn = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True");
ServerConnection serverconn = new ServerConnection(sqlconn);
Server s = new Server(serverconn);
s.DetachDatabase("ghale", false);
//MessageBox.Show("ok");
SqlConnection sqlconn1 = new SqlConnection(@"Data Source=.;Initial Catalog=mydb2;Integrated Security=True");
SqlCommand sqlcmd = new SqlCommand("ALTER DATABASE mydb2 SET SINGLE_USER with ROLLBACK IMMEDIATE " + "use master " + "RESTORE DATABASE [mydb2] FROM DISK = @n WITH REPLACE ", sqlconn1);
sqlcmd.Parameters.AddWithValue("@n", f.FileName);
sqlconn1.Open();
sqlcmd.ExecuteNonQuery();
sqlconn1.Close();
SqlConnection sqlconn2 = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True");
ServerConnection serverconn2 = new ServerConnection(sqlconn2);
Server s1 = new Server(serverconn2);
s1.AttachDatabase("ghale", new StringCollection {
@"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ghale.mdf",
@"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ghale_log.ldf" }, AttachOptions.None);
//MessageBox.Show("ok");
MessageBox.Show("OK");
}
게시물에 smo가 무엇입니까? – RBT
@RBT : SQL Server의 공유 관리 개체 - 서버 및 해당 데이터베이스 개체를 관리하는 라이브러리 –
SMO는 SQL Server 관리 개체를 나타냅니다. – atefeh