簡體   English   中英

遠程數據庫的 C# SMO 備份到本地機器

[英]C# SMO backup of remote database to local machine

我有一個執行 SQL 數據庫備份和恢復的應用程序,這在本地機器上運行良好,但是如果我在另一台機器上托管的 SQL 服務器上運行它,我會收到以下錯誤

Microsoft.SqlServer.Management.Smo.FailedOperationException: Backup failed for Server '25.98.30.79'.
Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch.
System.Data.SqlClient.SqlException: Cannot open backup device 'C:\Program Files\State Manager\Archive\Capture\20100217152147\*product*\databases\*database*\*database*.bak'. Operating system error 3(The system cannot find the path specified.).

這似乎是由 SQL 服務器試圖將此文件寫入其本地驅動器引起的。 由於安全限制,我無法設置可以放置備份的共享區域。

有誰知道如何將這些數據移回正在調用代碼的機器?

我的代碼如下。

private string Name;
private string Server;
private string dbName;
private string user;
private string password;

public Boolean performCapture(String archiveDir)
{
    String destination = archiveDir + "\\" + Name;
    if (!System.IO.Directory.Exists(destination))
    {
        System.IO.Directory.CreateDirectory(destination);
    }

    Server sqlServer = connect();
    if (sqlServer != null)
    {
        DatabaseCollection dbc = sqlServer.Databases;
        if (dbc.Contains(dbName))
        {
            Backup bkpDatabase = new Backup();
            bkpDatabase.Action = BackupActionType.Database;
            bkpDatabase.Database = dbName;
            BackupDeviceItem bkpDevice = new BackupDeviceItem(destination + "\\" + dbName + ".bak", DeviceType.File);

            bkpDatabase.Devices.Add(bkpDevice);
            bkpDatabase.Incremental = false;
            bkpDatabase.Initialize = true;
            // Perform the backup
            bkpDatabase.SqlBackup(sqlServer);

            if (System.IO.File.Exists(destination + "\\" + dbName + ".bak"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

不,這永遠行不通 - SQL Server 只能備份到物理連接到實際 SQL Server 機器的驅動器。 在任何情況下都不能將遠程 SQL Server 備份到本地硬盤 - 只是不可能(無論是在 SMO 中,還是在 SQL Server Management Studio 中)。

您可以將遠程數據庫復制到本地。 要復制使用此:右鍵單擊 SSMS 中的遠程數據庫:任務 -> 導出數據。 在打開的窗口中選擇源和目標數據庫,它會將所有數據從源(遠程)復制到本地數據庫。

正如 Marc_s 所說,它無法制造。 作為一種解決方法,您可以讓數據庫調用主機中的命令行程序,通過 ftp 發送文件,將其復制到某個共享文件夾或其他地方。

祝你好運

我知道這是一篇舊帖子,但是您可以備份遠程 sqlserver 的數據庫

您只需在遠程和本地計算機中創建相同的文件夾名稱和驅動器

例子:

d:\\sql_backup在本地計算機上d:\\sql_backup在遠程計算機上

它會做到的......當然備份文件將在遠程計算機上

如果要獲取備份文件,只需共享遠程計算機的文件夾即可

薩魯多斯魯本克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM