Для этого есть две части: во-первых, как остановить развертывание настроек, которые вы не хотите разворачивать, - можете ли вы привести пример одного из параметров, которые не применяются?
Для второй части, где у вас нет доступа к 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 \ Сборка»папка.
Я надеюсь, что это помогает, если у вас есть какие-либо другие вопросы, не стесняйтесь оставлять здесь или свистеть меня :)
ред
Почему вы не можете получить к ним доступ, это ваши права или база данных только для чтения? –
@EdElliott - это в основном вопрос доступа. Производственная среда заблокирована так, что она доступна только * на всех * с машины, на которой мы должны работать RDP, и эта машина доступна только через VPN. В прыжке есть SSMT, но не VS, и у нас есть только доступ для чтения через него (кроме DBA). – Bobson