2011-08-16 8 views
4

SQL Server의 다른 데이터베이스 (DEV 및 테스트 데이터베이스)에 데이터베이스 (프로덕션 데이터베이스)의 복사본을 만들려면 C#, .NET 3.5 및 SMO를 사용합니다. 2005.새 이름으로 .bak 파일에서 데이터베이스 복원

데이터베이스에서 백업을 생성하여 복원했습니다. 이것은 물론 기존의 것을 덮어 씁니다. 나는 this CodeProject guide을 사용했다.

데이터베이스의 백업을 동일한 데이터베이스에 다른 이름으로 다른 데이터베이스로 복원하려면 어떻게합니까? 한마디로

+0

데이터베이스 속성을 새 이름으로 설정해야합니다. 또한 로그/데이터 파일 이름이 기존 로그 파일 이름과 다르다는 것을 확인해야합니다. 중복 될 수 있습니다. http://stackoverflow.com/questions/1627145/smo-restoring-to-a-different-db –

답변

5

:

  1. 새로운 데이터를 지정하고 Restore.RelocateFiles 속성을 사용하여 로그 파일, trueRestore.ReplaceDatabase 속성을 설정, 새로운 이름으로 Restore.Database 속성을 설정합니다. 자세한 설명은

Getting Started with SMO in SQL 2005 - Restores 문서의 새 위치 섹션으로 데이터베이스를 복원 읽어 보시기 바랍니다.

+0

굉장한 놈들! 너는 나의 하루를 구했다! 도움에 정말 감사드립니다. – Martin

7
using Microsoft.SqlServer.Management.Smo; 

string backupFile="Backupfile";//.bak file 

string dbName = "DBName"; 

string dbServerMachineName = "MachineName"; 

Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(dbServerMachineName); 

Database database = new Database(server, dbName); 

//If Need 

database.Create(); 

database.Refresh(); 

//Restoring 

Restore restore = new Restore(); 

restore.NoRecovery = false; 

restore.Action = RestoreActionType.Database; 

BackupDeviceItem bdi = default(BackupDeviceItem); 

bdi = new BackupDeviceItem(backupFile, DeviceType.File); 

restore.Devices.Add(bdi); 

restore.Database = dbName; 

restore.ReplaceDatabase = true; 

restore.PercentCompleteNotification = 10; 

restore.SqlRestore(server); 

database.Refresh(); 

database.SetOnline(); 

server.Refresh(); 
관련 문제