Подтвердить что ты не робот

Не удается обновить с помощью сравнения схемы

До сегодняшнего дня я смог использовать функцию сравнения схем в Visual Studio 2012 для обновления базы данных из проекта базы данных. Но теперь для одного проекта я могу выполнить сравнение, но кнопка обновления неактивна.

Я могу использовать другие проекты для обновления другой базы данных, но из этого проекта я не могу обновлять базы данных. Я не получаю никаких ошибок, функциональность просто недоступна.

Использование публикации по-прежнему работает. Также обновление проекта из базы данных работает, а не наоборот.

Кто-нибудь знает, почему я не смог бы обновить базу данных через Schema Compare?

4b9b3361

Ответ 1

Проверьте нижнюю часть экрана после сравнения, там отображаются сообщения о состоянии. Я видел эту проблему, если в проекте базы данных есть ошибка компиляции. Как только ошибка будет решена, закройте и снова откройте диалоговое окно сравнения. Повторите попытку, и кнопка Обновить снова должна быть доступна.

Ответ 2

Вы должны проверить пользователей баз данных и схему базы данных. Часто, если пользователи базы данных неправильно реплицируются в DB Project, Schema Compare не работает.

Ответ 3

Для меня панель с ошибками и панель вывода ничего не показывали в Visual Studio 2015. Только после создания проекта базы данных, который я настраивал, я мог видеть ошибки в области вывода (но все же не в панель списка ошибок). После исправления этих ошибок кнопка "Обновить" больше не была выделена серым цветом.

Ответ 4

Иди в эту же проблему сам. Как уже упоминалось выше, в обычном списке ошибок Visual Studio будут перечислены ошибки, блокирующие обновление... но, кроме того, также будут предупреждения. Один из параметров, который включен по умолчанию, заключается в том, что потеря данных блокирует обновление. Это проблема. Несмотря на то, что это только условие предупреждения, любая возможная потеря данных является функционально ошибкой, если вы не измените этот флаг.

imho, это довольно серьезный сбои пользовательского интерфейса на MS part, но что вы собираетесь делать?

Ответ 5

Что работало для меня, было включение схемы. Я выбирал, чтобы включать только определенные таблицы /procs и т.д. Если схема, содержащая таблицы и процедуры, также не отмечена галочкой, импорт не включает элементы.

Ответ 6

Вам нужно убедиться, что все ваши переменные SQLCMD имеют значения по умолчанию.

Щелкните правой кнопкой мыши по проекту в обозревателе решений и выберите "Свойства".

На вкладке слева перейдите к SQLCMD Variables и введите значения по умолчанию в предоставленный столбец.

После запуска вашей схемы сравните другое время, теперь должна появиться кнопка обновления.

Ответ 7

В моем случае проблема заключалась в том, что я установил более новую версию SQL Server и SSMS (2016). Вы всегда должны убедиться, что у вас установлена правильная версия Sql Server Data Tools, соответствующая версии, с которой вы сравниваете. Вот ссылка на SSDT для SQL Server 2005-2017, проверенная мной при работе с Visual Studio 2017:

https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017

Ответ 8

Для меня я изменил порядок добавления таблиц. Если есть какие-либо отношения между любыми двумя таблицами, вы должны добавить родительскую таблицу, а затем зависимую в базу данных.

Ответ 9

Мало того, что схема должна быть в вашем проекте базы данных, она должна постоянно обновляться, если она изменяется в базе данных. Обновления перестают работать после того, как администратор базы данных предоставил exec-разрешение новому имени входа sql в базе данных на схеме, которая была в моем проекте. После нескольких сбоев изменений любых хранимых процедур, которые были применены к моему проекту, я обновил проект, выбрав только измененную схему. После обновления схемы в проекте базы данных обновление снова заработало. Я включаю схему во все обновления. Надеюсь это поможет.

Ответ 10

В Schema Compare перейдите в "Настройки" → "Общие" → проверьте *Ignore authorizer*