У меня есть таблица dnn_Files с заданной пользователем папки функция столбца:Изменить определяемые пользователем функции тела используется столбец таблицы в Sql сервере
CREATE TABLE [dnn_Files](
...
[Folder] AS ([GetFileFolderFunc]([FolderID])),
...
...
база данных была создана с помощью установки DotNetNuke и был использован. Значит, это не пусто.
Моя истинная цель состоит в том, чтобы добавить к базе данных «dnn_» в базу данных (исходная база данных имеет пустой классификатор).
Чтобы архивировать, что я переименовал все таблицы dnn, удаленные хранимые процедуры, пользовательские функции (кроме GetFileFolderFunc - его нельзя удалить, поскольку на него ссылаются dnn_Files), просматривать и воссоздавать его с помощью подходящего классификатора объектов.
После этого я получаю стол, как описано выше. Таблица имеет правильный квалификатор, а GetFileFolderFunc - нет. Поскольку таблицы были переименованы, GetFileFolderFunc теперь ссылается на несуществующую таблицу. Соответствующий двойник с квалификатором (dnn_GetFileFolderFunc) находится в базе данных.
Итак, я хочу, чтобы dnn_Files использовали новую функцию dnn_GetFileFolderFunc.
Когда я пытаюсь изменить столбец «Папка» (путем изменения спецификации вычисляемого столбца с помощью конструктора студийной среды Sql), он не работает с ошибкой «Сохранение изменений не разрешено. Изменения, которые вы внесли, требуют, чтобы dnn_Files был капельницей и заново создан. .. ". Поскольку dnn_Files имеет много отношений, он не может быть изменен. Кажется логичным.
Затем я пытаюсь изменить тело GetFileFolderFunc, чтобы использовать таблицы с новым классификатором объектов, но не повезло. Ошибка: «Не может ALTER» dbo.GetFileFolderFunc », потому что на нее ссылается объект« dnn_Files ».
Есть ли какие-либо обходные пути для первого или второго ограничения?
версия Sql сервер: 11.0.2100.60
Попробуйте выполнить ALTER, используя команду SQL alter вместо использования интерфейса SSMS. –
Если нет, вам может потребоваться отбросить/создать и повторно заполнить данные в dnn_Files. ВСЕГДА возьмите резервную копию ПОЛНОГО БД, прежде чем пробовать такие вещи. –
@ L_7337, спасибо. Я написал для этого ответ. –