我正在使用SQL-DMO將位於網絡共享位置的數據庫備份還原到在本地計算機上運行的SQL Server實例。什麼可能導致數據庫從網絡共享恢復失敗?
該代碼在我的機器上正常工作。但是在一個測試虛擬機上,它只有在我將備份放在本地路徑中時纔有效。如果我在網絡上嘗試它,它會失敗。
我發現了SQL服務器上的虛擬機被下系統用戶運行,並改變其運行爲網絡服務認爲這是網絡接入的問題。但它沒有解決問題。
此代碼失敗,因爲對ReadFileList的調用返回空結果集。
Dim restore As New SQLDMO.Restore With {
.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database,
.ReplaceDatabase = True,
.Database = dbName,
.Files = "[" + backupFile + "]",
.Devices = ""}
Dim fileList = restore.ReadFileList(sqlserver)
Dim dataLogicalName = fileList.GetColumnString(1, 1)
Dim dataPhysicalName = Path.GetFileName(fileList.GetColumnString(1, 2))
Dim logLogicalName = fileList.GetColumnString(2, 1)
Dim logPhysicalName = Path.GetFileName(fileList.GetColumnString(2, 2))
[SQL-DMO]此緩存不包含結果集,或當前結果集包含 任何行。
在此代碼之前,我會檢查File.Exists(backupFile)
並通過。但是,我知道運行此檢查的過程(我的程序)與運行還原(SQL Server)的過程並不相同,因此這不是一件容易的事。
什麼可能導致此行爲?我能做些什麼來弄清爲什麼服務器無法看到備份文件?
值得一提的是,我正在運行SQL Server 2008 R2。 – 2011-03-28 11:28:38