我不知道你可以通過VB6到SMO的方式。我同意G Mastros關於使用COM/Interop方法直接實現.NET代碼。
另一種可以考慮的方法是,您可以使用Powershell,執行一個腳本來完成.NET SMO的工作。你仍然有要求.NET框架(和Powershell)的先決條件,但它會完成工作。您的腳本可以爲憑據,數據庫名稱,備份類型等提供參數。
我在有SQL Express(無備份SQL Agent,如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