Инструменты данных SQL Server игнорируют Refactor при сравнении схем
У меня, похоже, проблема, идентичная описанной здесь: SSDT Refactor Rename игнорируется генерацией сценария сравнения схем. По сути, компонент рефакторинга SQL Server Data Tools не работает при сравнении / обновлении схемы. Например, вместо переименования таблицы таблица со старым именем удаляется и создается таблица с новым именем. К сожалению, я не вижу приемлемого ответа на этот вопрос. Я нашел похожий вопрос, который, кажется, был задан тем же человеком в MSDN; см.: Refactor Rename игнорируется генерацией скрипта сравнения схем. Опять же, не похоже, что был предложен приемлемый ответ. Мне бы очень хотелось выяснить, как заставить эту функцию работать. У кого-нибудь есть идея?
1 ответ
Выяснили причину этой проблемы. Я заметил, что при сравнении схемы с моим проектом SQL Data Tools и другой (но, по сути, идентичной) базой данных фактически учитывался компонент рефакторинга. Я взглянул на сгенерированный скрипт SQLCMD и внизу увидел множество записей, которые выглядели так:
IF NOT EXISTS (SELECT OperationKey FROM [dbo].[__RefactorLog] WHERE OperationKey = 'ce3d4c93-c1c4-4967-9cd5-0048d1e7d22f')
INSERT INTO [dbo].[__RefactorLog] (OperationKey) values ('ce3d4c93-c1c4-4967-9cd5-0048d1e7d22f')
Я взглянул на базу данных, с которой у меня возникли проблемы, и, конечно же, в разделе Системные таблицы в SS MS я обнаружил dbo.__RefactorLog. После усечения этой таблицы сравнение схем снова показало правильный рефакторинг.