12

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;
    }
}
4

4 に答える 4

18

いいえ、これは機能しません。SQLServerは、実際のSQLServerマシンに物理的に接続されているドライブにのみバックアップできます。いかなる状況でも、リモートSQL Serverをローカルハードディスクにバックアップすることはできません。(SMOでもSQL Server Management Studioでも)不可能です

于 2010-02-17T16:35:58.520 に答える
1

リモートデータベースをローカルにコピーできます。コピーするには、次のコマンドを使用します。SSMSでリモートデータベースを右クリックします:[タスク]->[データのエクスポート]。開いたウィンドウでソースデータベースと宛先データベースを選択すると、すべてのデータがソース(リモート)からローカルデータベースにコピーされます。

于 2012-11-17T16:54:46.377 に答える
1

Marc_sが言ったように、それは作ることができません。回避策として、データベースがホスト内のコマンドラインプログラムを呼び出し、ファイルをftpで送信したり、共有フォルダーなどにコピーしたりします。

幸運を

于 2010-02-17T16:53:32.020 に答える
0

私はそれが古い投稿であることを知っていますが、はい、リモートsqlserverのデータベースをバックアップできます

リモートコンピュータとローカルコンピュータの両方で同じフォルダ名とドライブを作成するだけです

例:

ローカルコンピューターの d:\ sql_backupリモート コンピューターのd:\ sql_backup

そしてそれはそれをします...もちろんバックアップファイルはリモートコンピュータにあります

バックアップファイルを取得したい場合は、リモートコンピュータのフォルダを共有するだけです

saludos rubenc

于 2010-09-26T00:59:37.917 に答える