2012-01-15 4 views
1

내 데이터베이스를 백업하는 코드는 this tutorial입니다. 알 수 있듯이 코드는 동일합니다. 변수를 채우면 오류가 발생합니다. 내가 얻는 오류는C# Windows Forms 응용 프로그램에서 SMO를 사용하여 백업하면 백업에 실패했습니다.

'RITZEL-PC \ SQLEXPRESS'서버 백업에 실패했습니다.

백업 기능 :

public void BackupDatabase(String databaseName, String userName, String password,  String serverName, String destinationPath) 
    { 
     Backup sqlBackup = new Backup(); 

     sqlBackup.Action = BackupActionType.Database; 
     sqlBackup.BackupSetDescription = "ArchiveDataBase:" + DateTime.Now.ToShortDateString(); 
     sqlBackup.BackupSetName = "Archive"; 

     sqlBackup.Database = databaseName; 

     BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File); 
     ServerConnection connection = new ServerConnection(serverName, userName, password); 
     Server sqlServer = new Server(connection); 

     Database db = sqlServer.Databases[databaseName]; 

     sqlBackup.Initialize = true; 
     sqlBackup.Checksum = true; 
     sqlBackup.ContinueAfterError = true; 

     sqlBackup.Devices.Add(deviceItem); 
     sqlBackup.Incremental = false; 

     sqlBackup.ExpirationDate = DateTime.Now.AddDays(3); 
     sqlBackup.LogTruncation = BackupTruncateLogType.Truncate; 

     sqlBackup.FormatMedia = false; 

     sqlBackup.SqlBackup(sqlServer); 
    } 

버튼을 클릭

private void BackUp_Btn_Click(object sender, EventArgs e) 
    { 
     String databaseName = @"D:\MY_THESIS\WORKING FILES\NNIT-RMS.mdf"; 
     String userName = "NNIT-Admin"; 
     String password = "password"; 
     String serverName = @"RITZEL-PC\SQLEXPRESS"; 
     String destinationPath = @"D:\"; 

     BackupDatabase(databaseName,userName,password,serverName,destinationPath); 

    } 

나는 이미지를 게시 할 수 있지 않다 아직하지만 난 스크린 샷을 업로드 한 데이터베이스 정보 . 여기를 참조하십시오 : http://img268.imageshack.us/img268/9250/sqlg.jpg

+0

'databaseName'은 SQL Server Express에 연결될 때 데이터베이스의 ** 논리적 데이터베이스 이름 **이어야합니다. 'MYDATABASE' - ** ** .mdf 파일의 전체 파일 이름 **이 아닙니다. SMO가 별도의 .mdf 파일을 백업 할 수 있다고 생각하지 않습니다. –

+0

위에서 게시 한 스크린 샷을 보려면 백업 할 데이터베이스의 데이터베이스 정보 스크린 샷을 찍었습니다. 이것이 sqlserver2005의 데이터베이스 노드에 나타나는 이름입니다. 내가 잘못하고 있니? – RMSP

+0

SMO를 사용하여 "독립 실행 형".mdf 파일을 백업 할 수는 없습니다. ** .mdf 파일을 SQL Server Express에 ** 첨부 ** ** 논리적 ** 데이터베이스 이름을 부여한 다음 SMO 백업에 해당 논리적 데이터베이스 이름을 사용해야합니다. 이 전체 ".mdf on the fly"기능은 다소 혼란스럽고 솔직하게 사용해서는 안되며 SQL Server 2012 ("Denali")에서 중단됩니다. –

답변

0

돈 '할당 다시 문자열 값 u는 단지 그들을 제거하고 같은 백업 전화 :

백업 데이터베이스하기 위해
BackupSqlDatabase("YourDataBaseName","sa","password","ServerName","C:\\YourDataBaseName.bak"); 
1

, 프로세스의 SQL 서버가 필요로 실행됩니다 백업 대상 폴더의 올바른 폴더 사용 권한

SQL Server 프로세스가 로컬 관리자로 실행되고 있지 않으면 내 경험에 의하면 루트 디렉터리에 쓸 수있는 권한이 없습니다.

SSMS를 열고 대상 경로로 데이터베이스를 백업하려고하면 같은 문제가 발생할 수 있습니다.

백업 폴더를 드라이브 또는 내 문서 폴더의 루트가 아닌 다른 것으로 변경하십시오.

관련 문제