我的应用程序有一个从备份文件创建的数据库,如下所示:
-- 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,基本上我有一个用于存储文件的表和一个包含保存为 SQL Server Filestream 数据的二进制数据的 blob 列。
随着客户继续使用该应用程序,文件流部分变得巨大,mdf 可能为 500MB,文件流为 60GB
通常,为了在开发计算机上调试问题,我需要传输“仅表”(“500MB”)和“而不是 blob”(“60GB”)。
我所做的是复制数据库,并在复制的数据库上,将文件表中的 blob 列设置为 NULL,然后运行
CHCEKPOINT
然后我等待垃圾收集器完成其工作,然后我可以进行备份并拥有一个小文件。
有时我没有空间来恢复备份的副本,或者我没有时间这样做。
所以我很想能够做,但我没有在所有网络上找到解决方案是:
复制.mdf
+ .ldf
仅(包含数据)
以某种方式创建“假文件流数据”(SQL Server 在附加时将接受的数据)
Attach .mdf
, .ldf
并伪造文件流数据来创建测试数据库
当然,我不希望对 blob 进行查询,但对其他表进行所有查询,是的。
有没有办法(甚至可能使用 3d 方工具)来实现我所需要的?