VB6를 통해 SMO에 접근 할 수있는 방법을 모르겠습니다. .NET 코드를 직접 구현하기 위해 COM/Interop 방식을 수행하는 것에 대해서는 G Mastros와 동의합니다.
고려해야 할 대안은 Powershell을 통해 .NET SMO 작업을 수행하는 스크립트를 실행할 수 있다는 것입니다. 여전히 .NET 프레임 워크 (그리고 Powershell은 분명히)를 요구하는 사전 요구 사항이 있지만 작업이 완료됩니다. 스크립트가 자격 증명, 데이터베이스 이름, 백업 유형 등에 대한 매개 변수를 사용할 수 있습니다.
SQL Express (MSDE와 같은 백업용 SQL 에이전트 없음)가있는 클라이언트에서이 기능을 많이 구현합니다. 스크립트를 호출하고 백업을 관리하는 예약 된 작업을 연결합니다.
도움, 여기 스크립트입니다 - 주로 도난하지만 어느 정도를 수정 한 :
param (
[string] $ServerName,
[string] $DatabaseName,
[string] $Backuptype,
[string] $BackupPath,
[int] $NumDays
)
Get-ChildItem $BackupPath | where {$_.LastWriteTime -le (Get-Date).AddDays(-$NumDays)} | remove-item
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
[System.IO.Directory]::CreateDirectory($BackupPath) | out-null
$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$servername"
$bck=new-object "Microsoft.SqlServer.Management.Smo.Backup"
if ($Backuptype -eq "FULL")
{
$bck.Action = 'Database'
$extenstion=".BAK"
$text1="Full Backup"
}
if ($Backuptype -eq "TRAN")
{
$bck.Action = 'Log'
$bck.LogTruncation = 2
$extenstion=".TRN"
$text1="Transactional Log Backup"
}
if ($Backuptype -eq "DIFF")
{
$bck.Incremental = 1
$extenstion=".DIFF"
$text1="Differential Backup"
}
$fil=new-object "Microsoft.SqlServer.Management.Smo.BackupDeviceItem"
$fil.DeviceType='File'
$fil.Name=[System.IO.Path]::Combine($BackupPath, $DatabaseName+ "_"+ [DateTime]::Now.ToString("yyyy_MM_dd_HH_mm")+$extenstion)
$bck.Devices.Add($fil)
$bck.Database=$DatabaseName
$bck.SqlBackup($srv)
write-host $text1 of $Databasename done
그것은 전체, 차등을 할 수 있으며, 트랜잭션 백업 및 고유 이름을 각 결과 파일이 날짜를 기준으로하고 특정 일 수보다 오래된 모든 파일을 삭제합니다. 를 호출하는
구문은 다음과 같습니다
.\Backup.ps1 INSTANCENAME DATABASENAME FULL|TRAN|DIFF PATH DAYSTOKEEP
그래서 ...
.\Backup.ps1 SQLEXPRESS Northwind FULL C:\TempHold\Test 30
.\Backup.ps1 SQLEXPRESS Northwind TRAN C:\TempHold\Test 30
.\Backup.ps1 SQLEXPRESS Northwind DIFF C:\TempHold\Test 30
작업 스케줄러에 예약하려면에서 통과 :
powershell c:\temphold\test\backup.ps1 "SQLEXPRESS Northwind DIFF C:\TempHold\Test 30"
는이에 대한 해결책을 찾았 ...
Pls는 내가 여기 실종 오전 무엇에 관한 조언 "... 런타임 오류"를 준다? 비슷한 질문을 올리려고했습니다 ... – Taptronic
죄송합니다. 내 의견을 보지 못했습니다 ... 예, 실제로 사실, 나는 그것을 최종 감동으로주고 있습니다. 내가 끝내 자마자 상세한 답변을 게시 할 것입니다. 오늘 언젠가 있어야합니다. – Mostlyharmless