Sql Schema Compare не будет обновляться после установки объекта CLR "Дрейф схемы схемы источника"

После установки пользовательского объекта CLR Sql Server Developer Tools (SSDT) VS2012 не разрешит обновление. Ошибка: обнаружен дрейф исходной схемы. Нажмите "Обновить", чтобы обновить. После обновления происходит то же самое.

Tried In, я установил объект только в хранимые процедуры. Настройки → Общие → Блокировать возможную потерю данных → пытались как включить, так и выключить.

Ответ 1

Такой тип цикла также может быть вызван тем, что проект SSDT, на который ссылается, не может быть создан. Указанный проект может отсутствовать, выгружаться или иметь ошибку, которая не позволяет выполнить сравнение.

Ответ 2

Это не ответ, а ключ к решению этой проблемы.

Я должен был обновить colm от varchar [200] до varchar [MAX] и получил эту проблему. Поэтому я вошел в систему на сервере и попытался обновить базу данных вручную через SQL Management Studio, которая была установлена там, и я получил эту ошибку:

"Saving changes is not permitted. The changes you have made require the folloing tables to be drpped and re-created. You have either made changes to a table that can't be re-created or enable the option Prevent saving changes that require the table to be re-created."

Кажется, что пересоздание таблицы настолько опасно, что "блокировать/разблокировать возможные потери данных" не может справиться. Поэтому я думаю, что если мы сможем обойти это ЛОКАЛЬНОЕ предупреждение, можем ли мы обновить базу данных REMOTELY.

Но почему [200] до [max] приводит к воссозданию таблицы? В этом нет никакого смысла. Я попробовал [200] до [1000], и это не сработало. Это может быть ключом к этой проблеме.

И если вы делаете то же самое обновление в Server explorer в VS, вместо SQL Management Studio, это работает. Опять же, почему?

Ответ 3

Я пытался запустить VS в качестве администратора, это сработало.

Ответ 4

Это может произойти, когда пользователь db "изменится".

Следующая довольно страшная страница форума рассказывает о проблемах, когда иностранные хакеры пытались получить доступ к пользователю "sa" db с каждой попыткой изменить временную метку даты sa-user (которая рассматривается как дрейф схемы):

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/5c22a7b4-7a82-4717-a118-2475bc62705b/schema-compareupdate-error-target-schema-drift-detected?forum=ssdt

Здесь также упоминается, что вы можете запросить sa-user несколько раз, чтобы убедиться, что это происходит с вами:

SELECT * FROM sys.server_principals WHERE principal_id=1

В настоящее время я испытываю ту же проблему (что sa-user изменен, я еще ничего не знаю о хакерах), и я еще не нашел решение. Я обновлю этот ответ, если да.