-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
我需要一个功能,让我通过备份文件到服务器,接下来,恢复它。
没有,据我所知,该文件有**实际存在**在磁盘上,或者在服务器自身的内部磁盘或网络位置(通过UNC路径指定),服务器(和服务器进程'帐户)有权访问。你不能只在备份中传递'varbinary(max)'变量。另外:该变量将被限制为** 2 GB **,并且您的数据库备份可以轻松*超出该限制 –
如果您使用ac#应用程序调用此过程,则可以将.bak文件作为参数传递,如图像或其他文档。 – McNets
@mcNets好的。如何从varbinary(max)流变量恢复备份文件? –