2016-11-27 34 views
-1

データベースのバックアップを復元する手順を作成しようとしています。バックアップファイルをvarbinary(max)型のパラメータで渡したいと思います。varbinary(max)変数バックアップファイルからSQL Serverバックアップを復元する

可能でしょうか?私はそのことについて言及していませんでした。

バックアップファイルがサーバー上に存在しないため、クライアントマシン上にあるため、このタスクを実行する必要があります。

コード(C#)でこの手順を呼び出す必要があります。

EDIT

今日、私はバックアップファイルを作成して返します次のコードをしました:私は私が戻ってサーバーにバックアップファイルを渡すことができる機能を必要とする

DECLARE @MdfFilePath AS VARCHAR(MAX), 
     @BackupFileName AS VARCHAR(MAX), 
     @DbName AS VARCHAR(MAX) = DB_NAME() 
SELECT 
    @MdfFilePath = physical_name 
FROM 
    sys.master_files 
WHERE 
    database_id = DB_ID(@DbName) 

SELECT @BackupFileName = LEFT(@MdfFilePath,LEN(@MdfFilePath) - charindex('\',reverse(@MdfFilePath),1) + 1) + @DbName +'_' + 
     REPLACE(CONVERT(VARCHAR(MAX), GETDATE(), 121), ':', '-') + '.bak' 

BACKUP DATABASE @DbName 
TO DISK = @BackupFileName 
WITH INIT 


DECLARE @SQL AS NVARCHAR(MAX) 
SET @SQL = 'SELECT * FROM OPENROWSET(BULK ''' + @BackupFileName + ''', SINGLE_BLOB) rs' 

EXEC sp_executesql @SQL 

を次に、それを復元します。

+1

いいえ、私の知る限り、ファイルはディスク上に物理的に**存在している必要があります**サーバーの内部ディスクまたはUNCパス経由で指定されたネットワーク上の場所でサーバーとサーバープロセス 'アカウント)にアクセスできます。あなたは 'varbinary(max)'変数をバックアップに渡すことはできません。また、その変数は** 2GB **に制限され、データベースのバックアップはその制限よりも容易に*大きくなる可能性があります –

+0

この手順を呼び出すためにac#appを使用する場合は、.bakファイルをパラメータとして渡すことができます。画像または他の文書を含むことができる。 – McNets

+0

@mcNets varbinary(max)ストリーム変数からバックアップファイルを復元する方法は? –

答えて

1

いいえ - SQL Server Engineは、復元する物理ファイルを「参照」できる必要があります。クライアントPCのバックアップ場所を、SQL Serverサービスホストサーバーがマップできる共有ドライブとして設定するのが最も効果的です。

関連する問題