Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#SMO将远程数据库备份到本地计算机_C#_Sql_Smo - Fatal编程技术网

C#SMO将远程数据库备份到本地计算机

C#SMO将远程数据库备份到本地计算机,c#,sql,smo,C#,Sql,Smo,我有一个执行SQL数据库备份和恢复的应用程序,它在本地计算机上运行良好,但是如果我对另一台计算机上托管的SQL server运行此应用程序,则会出现以下错误 Microsoft.SqlServer.Management.Smo.FailedOperationException: Backup failed for Server '25.98.30.79'. Microsoft.SqlServer.Management.Common.ExecutionFailureException: An ex

我有一个执行SQL数据库备份和恢复的应用程序,它在本地计算机上运行良好,但是如果我对另一台计算机上托管的SQL server运行此应用程序,则会出现以下错误

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 server试图将此文件写入其本地驱动器引起的。由于安全限制,我无法设置可放置备份的共享区域

有人知道如何将这些数据移回调用代码的机器吗

我的代码如下

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中)

正如马克所说,这是不可能的。作为一个工作区,您可以让您的数据库调用主机中的命令行程序,该程序通过ftp发送文件,将其复制到某个共享文件夹或其他地方

祝你好运

我知道这是一篇老文章 但是,您可以备份远程sqlserver的数据库

您只需在远程和本地计算机中创建相同的文件夹名称和驱动器

例如:

d:\sql\u备份在本地计算机上 d:\sql\u备份在远程计算机上

它会做到的。。。当然,备份文件将在远程计算机上

如果要获取备份文件,只需共享远程计算机的文件夹即可

萨卢多斯
rubenc

您可以将远程数据库复制到本地数据库。要复制,请使用以下命令:右键单击SSMS:Tasks->Export data中的远程数据库。在打开的窗口中,选择源和目标数据库,将所有数据从源(远程)复制到本地数据库。

没错。这是不可能的。几个月前我花了几个小时寻找一条路。多亏了你们两位,我的路看起来就像下面乔纳森建议的那样。我已经编写了一个小套接字服务,可以根据请求发回文件。+1。很难找到答案。您可以添加“除非您在您的计算机上创建一个网络文件夹,并告诉Sql Server在那里创建备份文件。”我知道这个问题被标记为SMO,但这可能有助于其他人了解:@Jonathan关于Microsoft.SqlServer.Dac.DacServices?使用它,您可以创建一个本地.bacpac文件true-但即使在这里,您也必须首先将备份存储在服务器机器上的某个位置……这个问题特别是关于将数据库备份到“本地机器”,就像在代码运行的机器中一样。所以
Yes
后面跟着
当然备份文件将在远程计算机上
有点矛盾。