В моем приложении есть база данных, которую я создаю из файла резервной копии следующим образом:
-- 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'
Я использую файловую группу файлового потока только для хранения больших двоичных объектов, в основном у меня есть одна таблица, в которой я храню файлы, и один столбец больших двоичных объектов, содержащий двоичные данные, которые сохраняются как данные файлового потока SQL Server.
Поскольку клиенты продолжают использовать приложение, часть файлового потока становится огромной, может быть, что mdf составляет 500 МБ, а файловый поток — 60 ГБ.
Часто для отладки проблемы на машине разработки мне нужно передать «только таблицы» («500 МБ»), а «не большие двоичные объекты» («60 ГБ»).
Что я делаю, так это дублирую базу данных, и в дублированной базе данных я устанавливаю для столбца blob значение NULL в таблице файлов, а затем запускаю
CHCEKPOINT
Затем я жду, пока сборщик мусора закончит свою работу, а затем я могу сделать резервную копию и получить небольшой файл.
Иногда у меня нет места для восстановления копии резервной копии или нет времени это сделать.
Итак, что я хотел бы сделать, но я не нашел решения во всей сети:
Скопируйте только
.mdf
+.ldf
(содержащие данные)Каким-то образом создайте «поддельные данные файлового потока» (данные, которые SQL Server примет при подключении)
Прикрепите
.mdf
,.ldf
и поддельные данные файлового потока для создания тестовой базы данных.
Я, конечно, не жду, что запросы к блобам будут работать, но все запросы к другим таблицам — да.
Есть ли способ (может быть, даже с использованием стороннего инструмента) для достижения того, что мне нужно?