我的应用程序有一个我以这种方式从备份文件创建的数据库:
-- create empty db
CREATE DATABASE MyNewDB
-- restore on the empty db from file
RESTORE DATABASE MyNewDB
FROM DISK = 'c:\Temp\MyNewDB.bak'
WITH REPLACE,
MOVE 'MyDB_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.EXPRESS2008R2\MSSQL\DATA\MyNewDB.mdf',
MOVE 'MyDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.EXPRESS2008R2\MSSQL\DATA\MyNewDB_log.LDF',
MOVE 'MyDBFS' TO 'C:\FileStreamData\MyNewDBFS'
我使用文件流文件组仅存储 Blob,基本上我有一个表,我在那里存储文件和一个 Blob 列,其中包含保存为 SQL Server Filestream 数据的二进制数据。
随着客户不断使用该应用程序,文件流部分变得巨大,可能 mdf 为 500MB,文件流为 60GB
通常要在开发机器上调试问题,我需要传输“仅表”(“500MB”)和“不是 blob”(“60GB”)。
我所做的是复制数据库并在复制的数据库上,我将文件表中的 blob 列设置为 NULL,然后运行
CHCEKPOINT
然后我等待垃圾收集器完成它的工作,然后我可以进行备份并拥有一个小文件。
有时我没有空间来恢复备份的副本,或者我没有时间去做。
所以我希望能够做的,但我没有在所有网络上找到解决方案是:
仅复制
.mdf
+.ldf
(包含数据)以某种方式创建“假文件流数据”(SQL Server 将在附加时接受的数据)
附加
.mdf
和.ldf
伪造文件流数据以创建测试数据库
当然,我不希望对 blob 的查询起作用,但对其他表的所有查询,是的。
有没有办法(甚至可能使用 3d 派对工具)来实现我的需要?