2016-08-01 12 views
17

Я пытаюсь использовать SQL Schema Compare в Visual Studio 2013/15, и я столкнулся с проблемой, заключающейся в том, что удаление таблиц из delete удаляет их из обработки вообще.Включить, но не удалить SQL Schema Сравните

Проблема заключается в том, что таблицы, которые он пытается удалить, представляют собой таблицы, созданные клиентом, поэтому, когда мы синхронизируем нашу версию с их базами данных, она просит их удалить. Мы не хотим их удалять, но некоторые из их таблиц имеют ограничения на наши, поэтому, когда он пытается CCDR, он терпит неудачу из-за ограничений таблицы. Есть ли способ добавить таблицу, которая будет (воссоздана? Как и все остальные?), Без написания сценариев для каждого клиента, чтобы сделать то, что SQL Schema Compare уже делает только для этих нескольких таблиц?

Red-Gate SQL Compare делает это как-то, но он скрыт от нас, поэтому не совсем уверен, как это достигается. Disclusion не удаляет, но также не вызывает ошибок в скрипте.

UPDATE:

Опция «Капля ограничения не в источнике» не отображается корректно работать. Это действительно снижает некоторые из них, однако есть и другие, что он просто не оставляет ограничений. В инструменте red-gate, когда мы сравнивали, я нашел, как получить от него SQL, и их продукт не говорит, что таблица вообще нуждается в обновлении, в то время как Visual Studio делает это. Они, кажется, работают почти идентичны, но таблицы, которые не являются те, которые не должны быть обновление на всех (читайте ниже)

Update 2:

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

Ignore column collation checked

Still showing column collation

ответ

0

Я не знаю, если это поможет, но я нашел этот пункт на следующей странице: https://msdn.microsoft.com/en-us/library/hh272690(v=vs.103).aspx

обновление потерпит неудачу, потому что наши изменение включает в себя изменение столбца от NOT NULL до NULL и в результате приводит к потере данных. Если вы хотите, чтобы приступить к обновлению, нажмите кнопку «Параметры» (пятый номер слева) на панели инструментов для сравнения схем и снимите флажок с инкрементным развертыванием блока, если опция потери данных.

+0

Я уже снял флажок, проблема заключается в метании ключа, а не из-за потери данных. Спасибо, однако, – Dispersia

1

Мое предложение с этими типами вычислений предварительных данных - не использовать Visual Studio. Поместите логику на движок Sql и напишите код для этого в Sql. Из-за проблем с многопользовательской блокировкой механизма Sql эти типы процессов подвержены сбою, когда неправильные комбинации действий пользователя происходят одновременно. Инструмент Visual Studio не может взаимодействовать с проблемами блокировки данных из-за изменения записей, которые может использовать механизм Sql. Если вы даже заработаете, это будет безопасно работать, только если вы находитесь в режиме одного пользователя.

Это удобный инструмент, который проще, чем писать Sql, но есть огромные риски надежности и согласованности для перехода по этому пути.