Я не знаю, как вы можете добраться до SMO через VB6. Я бы согласился с G Mastros о том, как использовать COM/Interop для реализации .NET-кода напрямую.
Альтернатива рассмотрению заключается в том, что вы можете использовать оболочку Powershell, выполняя скрипт, который будет выполнять вашу работу .NET SMO. У вас все еще есть предпосылка требования .NET Framework (и Powershell, очевидно), но он выполнит эту работу. Ваш скрипт может принимать параметры для учетных данных, имени базы данных, типа резервного копирования и т. Д.
Я реализую это много на клиентах, у которых есть SQL Express (нет агента SQL для резервного копирования, например MSDE). Я подключаю запланированную задачу, которая вызывает скрипт и управляет их резервными копиями.
Если полезно, вот скрипт - в основном украден, но я изменил его немного:
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"
Вы нашли решение этой проблемы? Я собирался опубликовать аналогичный вопрос ... – Taptronic 2008-10-21 14:13:51
Извините, не видел твой комментарий ... Да, у меня на самом деле, инфакт, я просто даю ему последние штрихи. Постарайте подробный ответ, как только я закончу. должно быть когда-то сегодня. – Mostlyharmless 2008-10-22 21:38:47