VB6 経由で SMO にアクセスする方法がわかりません。.NET コードを直接実装するための COM/Interop アプローチについては、G Mastros に同意します。
別の方法として、.NET SMO の作業を実行するスクリプトを実行して、Powershell にシェル アウトすることもできます。.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"