从varbinary(max)变量备份文件还原SQL Server备份

时间:2016-11-27 21:31:20

标签: c# sql-server database

我正在尝试创建一个应该恢复数据库备份的过程。我想通过varbinary(max)类型参数传递备份文件。

有可能吗?我找不到任何参考。

我需要执行此任务,因为备份文件不在服务器上,它将在客户端计算机上。

我需要在代码(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 个答案:

答案 0 :(得分:1)

否 - SQL Server引擎必须能够"看到"要还原的物理文件。您可以实现的最佳效果是将客户端PC备份位置设置为SQL Server服务主机服务器可以映射到的共享驱动器。