2010-06-02 6 views

답변

2

응용 프로그램에서 백업 또는 복원하는 .sql 파일을 실행할 수 있습니다. 허락하신다면, 나는이 일이 스케줄 된 태스크에서 주로 이루어진 것을 보았습니다. 그러나 당신은 당신의 어플리케이션 내부에서 트리거 된 이벤트로부터 그것을 할 수 있다고 생각합니다.

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = "C:\\path\\to\\backup.sql"; 
p.Start(); 

UPDATE : 당신은 SQL Management Studio를 서버에 설치되어 있지 않은 경우 의견에서 지적

바와 같이,이 작동하지 않습니다. 또는 저장 프로 시저를 호출 할 수 있습니다. 반영 할 때, 나는 왜 저장 프로 시저를 먼저 제안하지 않았는지 확신하지 못합니다. 아마도 다른 방법론이 이전 프로젝트에서 그런 식으로 구현되도록 강요 당했기 때문에 내 뇌에서 신선했기 때문일 것입니다.

+0

이가 관리 Studio 윈도우 응용 프로그램과 동일한 시스템에 설치되어 있다고 가정 : 데이터베이스가이 샘플을 따라 백업에 그 후

. 그럴 수는 없으므로 항상 효과가 없을 것입니다. –

+0

좋은 지적입니다. 그에 따라 내 솔루션을 수정하겠습니다. – JustLoren

1

당신은 실행하여 응용 프로그램 내에서 백업을 요청할 수 있습니다

@"BACKUP DATABASE [MyDBName] TO DISK = 'c:\somedir\MyDBName.bak' WITH INIT" (ref)

를 사용하거나 SQL SMO 직접 SqlBackup() 개체. Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoExtended.dll, Microsoft.SqlServer.SqlEnum.dll 및 Microsoft.SqlServer.SmoEnum :

1

당신은 당신의 프로젝트에 대한 참조를 추가 SQL Server Management Objects

먼저 사용할 수 있습니다 .dll.

//Connect to the server 
Server srv = new Server(); 
//If Sql Server is not local or is a named instance you could do 
//Server srv = new Server("SERVERNAME"); 

Database db = srv.Databases("YourDB"); 

//Create a backup definition 
Backup backup = new Backup(); 

backup.Action = BackupActionType.Database; 
backup.BackupSetDescription = "Full backup of Adventureworks2008R2"; 
backup.BackupSetName = "My app Backup"; 
backup.Database = "YourDB"; 

//Configure the backup device 

BackupDeviceItem backupDevice = new BackupDeviceItem("YourDB.bak", DeviceType.File); 

backup.Devices.Add(backupDevice); 

//Specify wether do a full backup or not 
backup.Incremental = false; 

//Specify log truncation mode 
backup.LogTruncation = BackupTruncateLogType.Truncate; 

//Do the backùp 
backup.SqlBackup(srv); 
관련 문제