2015-12-16 7 views
1

У меня есть таблица для хранения содержимого документа с столбцом FILESTREAM и другой столбец, который является столбцом ROWGUIDCOL (требуется, когда у вас есть столбец FILESTREAM). Я хочу перенести эту таблицу с существующими данными в немного новую структуру как часть рефакторинга кода, чтобы два разных проекта могли повторно использовать код для управления своими записями.Переименование столбца ROWCOLGUID, когда таблица имеет столбец FILESTREAM

Проблема в том, что я хочу переименовать столбец ROWGUIDCOL, так что оба проекта имеют одинаковые определения столбцов для своих таблиц документов.

Я не могу использовать sp_rename, потому что он не работает в столбцах ROWGUIDCOL.

Я не могу удалить существующий столбец ROWGUIDCOL (а затем добавить замену), потому что я получаю сообщение об ошибке «Таблица, в которой есть столбцы FILESTREAM, должна иметь ненулевой уникальный столбец с свойством ROWGUIDCOL».

Я не могу добавить новый столбец ROWGUIDCOL (а затем падения резервного оригинала), потому что я получаю ошибку «Дубликат столбца определена как ROWGUIDCOL»

Есть ли решение этой проблемы? Нужно ли мне копировать все содержимое документа (столбец FILESTREAM) и сначала отбросить его, затем изменить ROWGUIDCOL, а затем вернуть содержимое FILESTREAM?

ответ

0

Рассмотрите возможность создания новой таблицы с другим именем для переноса. Затем загрузите INSERT...SELECT (сопоставление столбцов по желанию), отбросьте исходную таблицу и, наконец, переименуйте новую таблицу в исходное имя.

+0

ОК, спасибо ... так вы подтверждаете, что у меня нет выбора, кроме как скопировать все данные FILESTREAM из одной таблицы в другую? –

+0

@SimonGreen, это самый эффективный способ, который я могу придумать, чтобы выполнить рефакторинг. –