Я пишу скрипт для обновления базы данных, чтобы добавить возможность Filestream. Скрипт должен запускаться несколько раз без ошибок. Это то, что у меня сейчас есть
IF ((select count(*) from sys.columns a
inner join sys.objects b on a.object_id = b.object_id
inner join sys.default_constraints c on c.parent_object_id = a.object_id
where a.name = 'evidence_data' and b.name='evidence'
and c.name='DF__evidence_evidence_data') = 0)
begin
ALTER TABLE evidence SET ( FILESTREAM_ON = AnalysisFSGroup )
ALTER TABLE evidence ALTER COLUMN id ADD ROWGUIDCOL;
end
GO
Первый раз, когда я запускаю это для базы данных, он работает нормально. Во второй раз, когда выражение if должно быть ложным, выдается сообщение об ошибке: «Невозможно добавить файловую группу FILESTREAM или схему секционирования, поскольку таблица« доказательства »уже имеет файловую группу FILESTREAM или схему секционирования». Если я вставлю простой оператор выбора в оператор if и вытащу поток файлов alter table в строку, он будет работать правильно и не выполнит оператор if. Таким образом, по сути, он всегда запускает оператор потока файлов таблицы alter, даже если оператор if равен false.
Любые мысли или предложения будут великолепны. Спасибо.