Миграция с файлового потока на "классический" блоб

Я подумываю переместить базы данных всех моих клиентов в SQL Azure. Я использую одно поле FILESTREAM для хранения файлов в BLOB-объектах (не для производительности на больших BLOB-объектах), а просто потому, что я использую Express Edition и поэтому использую Filestream, чтобы не превышать ограничение размера Express DB).

У меня есть эта таблица, поле DOCUMENT содержит данные файлового потока, а поле GUID необходимо для реализации файлового потока:

CREATE TABLE [dbo].[DOC_FILES](
    [ID_DOC_FILE] [int] NOT NULL,
    [DOCUMENT] [varbinary](max) FILESTREAM  NULL,
    [GUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL
 CONSTRAINT [PK_DOC_FILES] PRIMARY KEY CLUSTERED 
(
    [ID_DOC_FILE] ASC
) ON [PRIMARY] FILESTREAM_ON [MyFileStreamFileGroup],
UNIQUE NONCLUSTERED 
(
    [GUID] ASC
) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [MyFileStreamFileGroup]

Как удалить файловый поток наилучшим образом?

Одна техника, которую я имею в виду, это просто:

1) переименование поля DOCUMENT в DOCUMENT_TEMP

2) создание нового поля DOCUMENT (не FILESTREAM) varbinary(max)

3) копировать и удалять из DOCUMENT_TEMP в DOCUMENT по одному

4) изменение таблицы для удаления файлового потока [ЭТО НЕ ЯСНО ДЛЯ МЕНЯ]

Можете ли вы предложить?

2 ответа

Решение

Как объяснено [ЗДЕСЬ][1], процедура полного удаления файлового потока после удаления всех столбцов файлового потока:

1) Отключение таблиц от файловых групп FILESTREAM

2) Удаление файлов файловой группы FILESTREAM

3) Удаление файловых групп FIELSTREAM

(подробности см. в статье)

[1]: http://beyondrelational.com/blogs/jacob/archive/2010/03/11/completely-removing-filestream- features-from-a-sql-server-2008-database.aspx

Когда вы создаете таблицы в Azure, просто создайте их как varbinary(max) и используйте SSIS или мастер импорта / экспорта для перемещения данных.

Если вы хотите преобразовать существующую базу данных в нативный varbinary, вам необходимо следовать базовой концепции, изложенной выше.

  1. Добавить новый столбец Document_temp
  2. Обновить таблицу, копируя данные из Document в Document_temp
  3. Удалить столбец документа
  4. Переименуйте столбец document_temp в документ.
  5. Удалите Guid, если он вам не нужен (выход из него не вреден).
Другие вопросы по тегам