加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#将远程数据库的SMO备份到本地机器

发布时间:2020-12-15 04:06:52 所属栏目:百科 来源:网络整理
导读:我有一个应用程序执行SQL数据库的备份和恢复,这在本地机器上工作正常,但是如果我针对在另一台机器上托管的SQL服务器运行它,我会收到以下错误 Microsoft.SqlServer.Management.Smo.FailedOperationException: Backup failed for Server ‘25.98.30.79’. — M
我有一个应用程序执行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 FilesState ManagerArchiveCapture20100217152147*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中).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读