2016-11-27 127 views
-1

我想創建一個應該還原數據庫備份的過程。我想通過varbinary(max)類型參數傳遞備份文件。從varbinary(max)變量備份文件還原SQL Server備份

有可能嗎?我找不到任何這方面的參考。

我需要因爲備份文件將不會在服務器上執行此任務,這將是一個客戶機上。

我需要在代碼(C#)上調用此過程。

編輯

今天,我有下面的代碼,創建並返回備份文件:

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)'變量。另外:該變量將被限制爲** 2 GB **,並且您的數據庫備份可以輕鬆*超出該限制 –

+0

如果您使用ac#應用程序調用此過程,則可以將.bak文件作爲參數傳遞,如圖像或其他文檔。 – McNets

+0

@mcNets好的。如何從varbinary(max)流變量恢復備份文件? –

回答

1

否 - SQL Server引擎必須能夠「查看」要恢復的物理文件。您可以實現的最佳目標是將您的客戶端PC備份位置設置爲SQL Server服務主機服務器可映射到的共享驅動器。