как установить в NULL все поля файлового потока varbinary (max)? - PullRequest
2 голосов
/ 06 сентября 2010

Мне нужно создать тестовую базу данных из огромной базы данных, в которой большая часть данных содержится в виде данных файлового потока.

Мне нужно проверить данные, не относящиеся к файловому потоку, поэтому я хотел бы сделать следующее:удалите информацию varbinary (max).

Это поля, которые у меня есть в моей таблице FILE_REPOSITORY_TABLE:

[ID_FILE] [int] NOT NULL,
[FILE_DATA] [varbinary](max) FILESTREAM  NULL,
[GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL

Я пытался сделать

Update FILE_REPOSITORY_TABLE
SET FILE = NULL

Iожидал, что это тоже удалит файлы, но этого не произошло.

Я не могу удалить записи, так как ID_FILE имеет ссылки FK.(при удалении записей из таблицы, содержащей данные файлового потока, также удаляются соответствующие файлы).В любом случае я также пытался сделать резервную копию, но размер файла был большим, даже если таблица заполнена значениями NULL.

Как это сделать?

Последнее замечание: моя цель - получитьРезервная копия 500 МБ вместо 10 ГБ (у меня 9,5 ГБ документов).Это только для целей тестирования.

1 Ответ

4 голосов
/ 06 сентября 2010

Данные файла возвращаются в процессе сборки мусора, а не удаляются немедленно. Связанное с этим сообщение в блоге , поэтому вам может потребоваться принудительное выполнение контрольных точек.

...