1

Мой администратор базы данных и я пытаемся решить, как эффективно использовать проекты Microsoft Database и создаваемые ими Dacpacs, чтобы упростить нашу систему развертывания производства.Развертывание Dacpacs в группе доступности в заблокированном производстве

В идеале я мог бы построить и/или опубликовать .sqlproj, генерируя файл .dacpac, который затем можно загрузить на производственный сервер и использовать для обновления базы данных с любой версии, которая была до последней версии. Это похоже на то, как мы делаем развертывание веб-сайтов, где я публикую пакет, а затем этот пакет загружается на сервер и импортируется в IIS.

Однако мы не можем решить, как это сделать. DBA уже создал базу данных и добавил ее в наши группы доступности. И каждый раз, когда мы пытаемся применить Dacpac, он пытается настроить параметры, которые он не может из-за AG.

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

Могу ли я использовать dacpacs таким образом?

+0

Почему вы не можете получить к ним доступ, это ваши права или база данных только для чтения? –

+0

@EdElliott - это в основном вопрос доступа. Производственная среда заблокирована так, что она доступна только * на всех * с машины, на которой мы должны работать RDP, и эта машина доступна только через VPN. В прыжке есть SSMT, но не VS, и у нас есть только доступ для чтения через него (кроме DBA). – Bobson

ответ

1

Для этого есть две части: во-первых, как остановить развертывание настроек, которые вы не хотите разворачивать, - можете ли вы привести пример одного из параметров, которые не применяются?

Для второй части, где у вас нет доступа к SQL Server Есть несколько способов справиться с этим:

  • Используйте автономную копию для создания развернуть сценарий
  • Получить АБД генерировать Deploy сценарий
  • Получить DBA развернуть с помощью dacpac
  • Получить доступ только для чтения к базе данных

Вариант 1: «Использовать автономную копию для генерации сценария развертывания»

Вам нужно сравнить dacpac с чем-то, и если у вас нет соединения TDS (стандартный порт по умолчанию tcp: 1433), вы можете использовать версия базы данных, которая соответствует производству либо через:

  • использования доставку журналов для восстановления копии производства где вы можете получить доступ к нему
  • Получить дб разработки и производство в синхронизации, то каждый релиз идет на разработчик и prod, что гарантирует их постоянную синхронизацию

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

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

Как только у вас есть доступ к базе данных, имеющей точно такую ​​же схему, что и производственная база данных, вы можете использовать скрипт sqlpackage.exe/action: для генерации сценария развертывания, на самом деле потому, что вы не можете создать производственную базу данных сценарий как часть вашего процесса CI :).

Вариант 2: «Получить DBA для создания сценария Deploy»

Это, чтобы получить DBA скопировать dacpac на сервер производств и использовать sqlpackage.exe, что будет в «Program Files (x86) \ Microsoft Sql Server \ Version \ DAC \ bin ", чтобы сравнить dacpac с базой данных и сгенерировать сценарий, который он может просмотреть перед развертыванием.

Вариант 3: «Получить DBA для создания сценария Deploy»

Это simlar к варианту 2, но вместо того, чтобы генерировать скрипт, он развертывает в SSMS он просто использовать sqlpackage.exe/Действие: Публикация развернуть изменяется напрямую.

Вариант 4: «Получить доступ только для чтения к базе данных»

Это на самом деле моя предпочтительным, поскольку это означает, что вы всегда строить сценарии против того, что гарантированно будет состояние производства (как это производство). В вашем случае вам нужно будет получить TCP-порт между вашим компьютером или в идеале вашей сборки машины и SQL Server, а затем вам нужно будет эти разрешения:

https://the.agilesql.club/Blogs/Ed-Elliott/What-Permissions-Do-I-Need-To-Generate-A-Deploy-Script-With-SSDT

Как я уже говорил вариант 4 всегда мой любимый, но Я понимаю, что это не всегда возможно.

Вариант 2 + 3 чреват беспокойством, поскольку вы будете запускать скрипты, которые не были протестированы нигде, с параметрами 4 и 1 вы можете сгенерировать скрипты, а затем развернуть их в базу данных тестирования/QA, если они сами имеют ту же схему, что и производство. Скрипты также могут проходить процесс проверки кода.

Если вы делаете вариант 2/3, я бы создал командный файл или скрипт powershell, который управляет sqlpackage.exe, и если они будут разворачиваться с другого сервера, у которого не будет sqlpackage.exe, вы можете скопировать папку DAC в эту машину и запустить sqlpackage из этого, вам не нужно ее фактически устанавливать (возможно, вам также потребуется скопировать файл Microsoft.SqlServer.TransactSql.ScriptDom.dll из «Program Files (x86) \ Microsoft Sql Server \ Version \ SDK \ Сборка»папка.

Я надеюсь, что это помогает, если у вас есть какие-либо другие вопросы, не стесняйтесь оставлять здесь или свистеть меня :)

ред

+0

У нас была наша настройка, поэтому ящик сборки прочитал привилегии для всех dbs и их схемы, чтобы он мог создать соответствующий отчет о развертывании и сценарий изменений. Затем мы могли бы просмотреть их из артефактов сборки и проверить их. ** Похоже, ваша проблема пытается сделать ALTER DATABASE. Есть команда/опция, чтобы не делать этого. Создайте профиль публикации, который не пытается обновить параметры базы данных, и все должно быть в порядке. Ваш администратор базы данных должен иметь возможность запускать соответствующие параметры, а затем генерировать отчет о различиях, сценарий и/или публиковать по мере необходимости. –

+0

Являются ли варианты 2/3 значительно отличающимися от выбора опции «Обновление» в SSMS?Я предположил, что это всего лишь графический интерфейс для SqlPackage, поэтому, если dacpac не работает в одном, это все равно будет проблемой в другом. Я поговорю с администратором базы данных о варианте 1. Хотя я определенно беспокоюсь об изменениях, применяемых к автономной копии, а затем не создавая их для производства. – Bobson

+0

@PeterSchott - Да, проблема с ALTER DATABASE. Отвратительная часть состоит в том, что для профилей публикации требуется строка подключения, которую я не могу с пользой дать без варианта ответа 1 (возможно, это возможно) или 4 (что совершенно не соответствует нормативным соображениям). – Bobson

 Смежные вопросы

  • Нет связанных вопросов^_^