我正在尝试创建一个应该恢复数据库备份的过程。我想通过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
我需要一个允许我将备份文件传回服务器的功能,然后恢复它。
答案 0 :(得分:1)
否 - SQL Server引擎必须能够"看到"要还原的物理文件。您可以实现的最佳效果是将客户端PC备份位置设置为SQL Server服务主机服务器可以映射到的共享驱动器。