<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Data Engineering | The .NET Blog</title><link>https://thedotnetblog.com/ru/tags/data-engineering/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ru</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Wed, 15 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ru/tags/data-engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Перестаньте относиться к базам данных как к особым снежинкам: Azure DevOps + SQL Projects по правилам</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azure-devops-sql-projects-ci-cd-fundamentals/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/azure-devops-sql-projects-ci-cd-fundamentals/</guid><description>Модель пайплайна SQL-проектов в Azure DevOps доказывает, что доставка баз данных может быть повторяемой, безопасной и тестируемой, если команды принимают дисциплину CI/CD с кодом на первом месте.</description><content:encoded>&lt;p&gt;Многие команды заявляют, что практикуют DevOps, а затем разворачивают изменения базы данных вручную с чьего-то ноутбука. Именно это противоречие устраняет данное руководство по Azure SQL. SQL-проекты плюс пайплайны Azure DevOps делают доставку базы данных детерминированной, проверяемой и достаточно безопасной для реальных производственных процессов.&lt;/p&gt;
&lt;p&gt;Оригинальный источник: &lt;a href="https://devblogs.microsoft.com/azure-sql/fundamentals-of-azure-devops-with-sql-projects/"&gt;https://devblogs.microsoft.com/azure-sql/fundamentals-of-azure-devops-with-sql-projects/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Самая сильная часть подхода — не синтаксис YAML, а последовательность дисциплины: сначала сборка, затем публикация, а путь развёртывания защищён минимальными привилегиями и беспарольной identity. Сборка &lt;code&gt;.sqlproj&lt;/code&gt; через dotnet рано проверяет совместимость с целевой платформой и производит артефакт DACPAC, который можно продвигать через окружения.&lt;/p&gt;
&lt;p&gt;Моё мнение простое: если ваша схема не собирается в CI, ваш процесс качества базы данных по большей части — надежда. Локальный успех в SSMS или VS Code не гарантирует релиз.&lt;/p&gt;
&lt;p&gt;Дизайн развёртывания тоже освежающе прагматичен. Используйте service connections, привязанные к identity Entra, предоставляйте ограниченные роли базы данных для сравнения схемы и данных, и автоматизируйте временное открытие файрвола для IP раннера с гарантированной очисткой. Это та операционная гигиена, которую команды пропускают, пока разбор инцидента взлома не заставит их пересмотреть всё.&lt;/p&gt;
&lt;p&gt;Практические рекомендации к немедленному применению:&lt;/p&gt;
&lt;p&gt;Разделите пайплайны сборки и развёртывания. Сборка должна запускаться при изменениях в ветке и быстро падать при ошибках. Развёртывание должно быть специфичным для окружения и защищённым политиками. Храните строки подключения к целевым базам и метаданные инфраструктуры в защищённых переменных пайплайна и регулярно проводите ревью управления назначением ролей. Также держите версии SqlPackage явными и зафиксированными в CI, чтобы избежать неожиданных изменений поведения.&lt;/p&gt;
&lt;p&gt;Не давайте избыточные привилегии заранее. Начинать с &lt;code&gt;db_ddladmin&lt;/code&gt;, &lt;code&gt;db_datareader&lt;/code&gt; и &lt;code&gt;db_datawriter&lt;/code&gt; — лучший базовый уровень, чем выдавать &lt;code&gt;db_owner&lt;/code&gt; каждому принципалу пайплайна «просто чтобы заработало». Повышайте привилегии, только когда конкретное требование развёртывания доказывает необходимость.&lt;/p&gt;
&lt;p&gt;Ещё один сильный вывод — переносимость. Поскольку SQL-проекты работают на тулчейне .NET SDK, этот паттерн не привязан только к Azure DevOps. Те же основы переносятся на GitHub Actions или другие оркестраторы, что делает это руководство стратегическим, а не привязанным к платформе.&lt;/p&gt;
&lt;p&gt;Если ваша организация всё ещё относится к доставке схемы как к особому процессу вне CI/CD приложения, это ваш план миграции. Вам не нужна героическая платформенная инженерия. Вам нужны согласованность, безопасность на основе identity и готовность перестать проводить изменения базы данных через специальные пути привилегий.&lt;/p&gt;
&lt;p&gt;Команды, которые сделают это, будут доставлять быстрее с меньшим числом откатов. Команды, которые отложат это, продолжат платить скрытый налог за ручные развёртывания на уровне данных.&lt;/p&gt;</content:encoded></item></channel></rss>