vsdbcmd.exe создает инструкции для удаления без имени ограничения
При создании сценария diff между двумя dbschema с помощью vsdbcmd.exe я иногда получаю неожиданный вывод, содержащий некоторое ограничение на удаление без имени ограничения:
GO
PRINT N'Dropping On column: ColumnName ...';
GO
ALTER TABLE TableName DROP CONSTRAINT ;
В нашей схеме этот столбец имеет ограничение по умолчанию со автоматически сгенерированным именем. Я ожидал, что vsdbcmd.exe сгенерирует корректный оператор ALTER TABLE sql, как указано в библиотеке msdn:
ALTER TABLE [имя_базы_данных [имя_схемы] . | имя_схемы ] table_name DROP { [ CONSTRAINT ] ограничение_имя | COLUMN column_name }
Есть ли у вас какие-либо идеи о том, что может помешать vsdbcmd.exe создать действительный оператор SQL?
1 ответ
Эта проблема возникает только тогда, когда ограничение имеет сгенерированное имя. Явно названные ограничения не затрагиваются. Следовательно, это решение состоит в том, чтобы назвать каждое ограничение.