2012-05-18 1 views
1

C# 코드를 사용하여 SQL 데이터베이스를 복원합니다. SQL 서버 관리 스튜디오를 사용하여 백업을 복원 할 때 백업 세트를 선택할 수 있습니다. 코드를 사용하여 수행 할 수 있습니까? enter image description here코드에서 백업 세트를 선택하십시오.

나는 첫 번째 세트를 복원는 위의 코드를 사용하여 다음 코드

openFileDialog1.ShowDialog(); 
    string databaseName = "TempDb"; 
    Restore sqlRestore = new Restore(); 

    BackupDeviceItem deviceItem = new BackupDeviceItem(openFileDialog1.FileName, DeviceType.File); 
    sqlRestore.Devices.Add(deviceItem); 
    sqlRestore.Database = databaseName; 

    DataConnection dataConnection = new DataConnection(); 
    ServerConnection connection = new ServerConnection(dataConnection.DataBaseConnection); 
    Server sqlServer = new Server(connection); 

    Database db = sqlServer.Databases[databaseName]; 
    sqlRestore.Action = RestoreActionType.Database; 
    String dataFileLocation = db.FileGroups[0].Files[0].FileName; 
    String logFileLocation = db.LogFiles[0].FileName; 
    db = sqlServer.Databases[databaseName]; 
    sqlServer.ConnectionContext.Disconnect(); 
    RelocateFile rf = new RelocateFile(databaseName, dataFileLocation); 


    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation)); 
    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation)); 
    sqlRestore.ReplaceDatabase = true; 
    sqlRestore.Complete += new ServerMessageEventHandler(sqlRestore_Complete); 
    sqlRestore.PercentCompleteNotification = 10; 
    sqlRestore.PercentComplete += new PercentCompleteEventHandler(sqlRestore_PercentComplete); 
    sqlRestore.SqlRestore(sqlServer); 
    db = sqlServer.Databases[databaseName]; 
    db.SetOnline(); 
    sqlServer.Refresh(); 

을 사용했다.

+0

당신이 다시 설정 무엇을 의미합니까 설정할 수 있습니다 원하는 백업 세트 알고 그래서 일단 링크

res.Devices.AddDevice("C:\AdventureWorks2012Backup.BAK", DeviceType.File) dt = res.ReadBackupHeader(srv) For Each r As DataRow In dt.Rows For Each c As DataColumn In dt.Columns Console.WriteLine(c.ToString + " = " + r(c).ToString()) Next Next 

에서

VB 코드? 장치들? – Diego

+0

우리는 SQL 서버 관리 스튜디오를 사용하여 DB를 복원 할 때 원하는 백업을 선택할 수 있습니다 (사진 참조) – udaya726

답변

1

Use all backup sets to restore database with SMO에서 살펴보면,

중요한 필드를 가진 FileNumber가 복원 대상에 나타납니다. 기본값은 1

Restore.ReadBackupHeader 메서드를 사용하여 백업 세트 목록을 가져올 수 있습니다. 당신은 당신이

sqlRestore.FileNumber = YOUR_CHOSEN_SET; 
+0

이것은 나를 위해 작동합니다 ... 감사합니다 ... – udaya726

관련 문제