Поделиться через


Руководство по настройке зеркальных баз данных Microsoft Fabric из SQL Server

Зеркальное отображение в Fabric — это корпоративная облачная технология SaaS без использования ETL. В этом разделе вы узнаете, как создать зеркальную базу данных SQL Server, которая непрерывно создает только для чтения реплицированную копию данных SQL Server в OneLake.

Это важно

Эта функция доступна в предварительной версии.

Предпосылки

Принципал базы данных для Fabric

Затем необходимо создать способ проверки подлинности службы Fabric в экземпляре SQL Server.

Это можно сделать с помощью логина и сопоставленного пользователя базы данных.

Использование имени входа и сопоставленного пользователя базы данных

Следуйте этим инструкциям для SQL Server 2025 или SQL Server 2016-2022, чтобы создать имя входа и пользователя базы данных для зеркального отображения базы данных.

  1. Подключитесь к экземпляру SQL Server с помощью средства выполнения запросов T-SQL, например SQL Server Management Studio (SSMS) или расширения mssql для Visual Studio Code.

  2. Подключитесь к master базе данных. Создайте имя входа сервера и назначьте соответствующие разрешения.

    Это важно

    Для экземпляров SQL Server в группе доступности Always On учётная запись должна быть создана во всех экземплярах SQL Server. Главный объект fabric_login должен иметь один и тот же идентификатор безопасности в каждом экземпляре реплики.

    • Создайте имя входа fabric_loginс проверкой подлинности SQL. Вы можете выбрать любое имя для этого имени входа. Укажите собственный надежный пароль. Выполните следующий скрипт T-SQL в master базе данных:
    CREATE LOGIN [fabric_login] WITH PASSWORD = '<strong password>';
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER [fabric_login];
    
    • Или войдите в систему в качестве администратора Microsoft Entra и создайте идентификатор Microsoft Entra ID, прошедший проверку подлинности для входа из существующей учетной записи (рекомендуется). Выполните следующий скрипт T-SQL в master базе данных:
    CREATE LOGIN [[email protected]] FROM EXTERNAL PROVIDER;
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER [[email protected]];
    
  3. Подключитесь к пользовательской базе данных, которую вы планируете отразить в Microsoft Fabric. Создайте пользователя базы данных, подключенного к имени входа, и предоставьте минимальные необходимые привилегии:

    • Для входа с проверкой подлинности SQL:
    CREATE USER [fabric_user] FOR LOGIN [fabric_login];
    GRANT SELECT, ALTER ANY EXTERNAL MIRROR, 
       VIEW SERVER SECURITY STATE, VIEW DATABASE SECURITY STATE, VIEW PERFORMANCE DEFINITION TO [fabric_user];
    
    • Или для входа с аутентификацией Microsoft Entra (рекомендуется):
    CREATE USER [[email protected]] FOR LOGIN [[email protected]];
    GRANT SELECT, ALTER ANY EXTERNAL MIRROR, 
       VIEW SERVER SECURITY STATE, VIEW DATABASE SECURITY STATE, VIEW PERFORMANCE DEFINITION TO [[email protected]];
    

Подключение к SQL Server

Инструкции и требования для настройки зеркальной базы данных Fabric из SQL Server отличаются в SQL Server 2025. В SQL Server 2025 сервер с поддержкой Azure Arc является частью необходимой конфигурации для связи с Fabric. Перед SQL Server 2025 Azure Arc не требуется, и репликация основана на сборе измененных данных (CDC).

Подключение сервера к Azure Arc и включение управляемой идентификации

Чтобы настроить зеркальное отображение Fabric, необходимо настроить Azure Arc для экземпляра SQL Server 2025.

  1. Подключите сервер к Azure Arc. Следуйте шагам в Кратком руководстве - Подключение гибридного компьютера с серверами с поддержкой Azure Arc.

    Для экземпляров SQL Server, работающих в группе доступности Always On или в конфигурации экземпляра отказоустойчивого кластера, все узлы должны быть подключены к системе Azure Arc.

  2. Три ключа реестра необходимы на сервере Windows Server, который размещает исходный экземпляр SQL Server для зеркального отображения Fabric. Для Windows Server разделы реестра содержат сведения об управляемом удостоверении, назначаемом системой (SAMI). Следующий скрипт PowerShell добавляет три ключа в реестр, необходимые разрешения файловой системы и управляемые удостоверения.

    Замечание

    В этом разделе содержится скрипт для изменения реестра Windows. Внимательно выполните эти действия. Для дополнительной защиты создайте резервную копию реестра перед его изменением. Затем, при возникновении проблемы, вы можете восстановить реестр. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. Как создать резервную копию и восстановить реестр в Windows.

    Три ключа реестра добавляются в указанное место.

    • Для экземпляра по умолчанию: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthentication
    • Для именованного экземпляра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.Instancename\MSSQLServer\FederatedAuthentication

    Скрипт добавляет следующие ключи:

    • ArcServerManagedIdentityClientId
    • ArcServerSystemAssignedManagedIdentityClientId
    • ArcServerSystemAssignedManagedIdentityTenantID

    Выполните следующий сценарий PowerShell, чтобы настроить назначаемое системой управляемое удостоверение (SAMI) и необходимые разделы реестра в Windows Server, на котором размещен исходный экземпляр SQL Server.

     $apiVersion = "2020-06-01"
     $resource = "https://storage.azure.com/"
     $ep = $env:IDENTITY_ENDPOINT
     $msi = "arc"
     if (!$ep) {
         $msi = "vm"
         $ep = 'http://169.254.169.254/metadata/identity/oauth2/token'
     }
     $endpoint = "{0}?resource={1}&api-version={2}" -f $ep,$resource,$apiVersion
     $secretFile = ""
     try {
         Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing > $null
         $msi = "vm"
     } catch {
         if ($_.Exception.Response.Headers) {
             $wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
             if ($wwwAuthHeader -match "Basic realm=.+") {
                 $secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
             }
         }
     }
     $secret = ""
     if ($secretFile) {
         $msi = "arc"
         $secret = cat -Raw $secretFile
     }
     try {
         $response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
     } catch {
         Write-Output "Can not establish communication with IMDS service. You need either to have Azure Arc service installed or run this script on Azure VM."
     }
     if ($response) {
         $parts = (ConvertFrom-Json -InputObject $response.Content).access_token -split "\."
         $padLength = 4 - ($parts[1].Length % 4)
         if ($padLength -ne 4) { $parts[1] += "=" * $padLength }
         $payload = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($parts[1])) | ConvertFrom-Json
         $regPath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
         $instance = ""
         $regKey = Get-Item -Path $regPath
         $regKey.GetValueNames() | Where-Object { $regKey.GetValue($_) -match 'MSSQL17' } | ForEach-Object {
             $instance = $_
             $service = if ($instance -eq "MSSQLSERVER") { "MSSQLSERVER" } else { "MSSQL$" + $instance }
             $reginst = $regKey.GetValue($_)
             $regFed = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$($reginst)\MSSQLServer\FederatedAuthentication"
             if (-not (Test-Path -Path $regFed)) {
                 New-Item -Path $regFed -Force > $null
             }
             if ($msi -eq "arc") {
                 Write-Host "Registering Azure Arc MSI service for SQL Server instance: " $instance `n
                 Set-ItemProperty -Path $regFed -Name "ArcServerManagedIdentityClientId" -Value ""
                 Set-ItemProperty -Path $regFed -Name "ArcServerSystemAssignedManagedIdentityClientId" -Value $($payload.appid)
                 Set-ItemProperty -Path $regFed -Name "ArcServerSystemAssignedManagedIdentityTenantId" -Value $($payload.tid)
                 $svcPath = "HKLM:\SYSTEM\CurrentControlSet\Services\$($service)"
                 if (Test-Path -Path $svcPath) {
                     $keyPath = Split-Path $secretFile
                     $svcKey = Get-Item -Path $svcPath
                     $sqlAccount = $svcKey.GetValue("ObjectName")
                     if ($sqlAccount -ne "LocalSystem") {
                         Write-Host "Permissioning folder" $keyPath "for SQL Server account" $sqlAccount `n
                         icacls $keyPath /grant "$($sqlAccount):(OI)(CI)R"
                         $group = "Hybrid agent extension applications"
                         $isMember = Get-LocalGroupMember -Group $group | Where-Object { $_.Name -eq $sqlAccount }
                         if (-not $isMember) {
                             Write-Host "Also adding SQL running account to local group: $group" `n
                             Add-LocalGroupMember -Group $group -Member $sqlAccount
                         } else {
                             Write-Host ""
                         }
                     }
                 }
             } else {
                 Write-Host "Registering Azure VM MSI service for SQL Server instance: " $instance `n
                 Set-ItemProperty -Path $regFed -Name "PrimaryAADTenant" -Value ""
                 Set-ItemProperty -Path $regFed -Name "OnBehalfOfAuthority" -Value "https://login.windows.net/"
                 Set-ItemProperty -Path $regFed -Name "FederationMetadataEndpoint" -Value "login.windows.net"
                 Set-ItemProperty -Path $regFed -Name "AzureVmManagedIdentityClientId" -Value ""
                 Set-ItemProperty -Path $regFed -Name "AzureVmSystemAssignedManagedIdentityClientId" -Value $($payload.appid)
                 Set-ItemProperty -Path $regFed -Name "AzureVmSystemAssignedManagedIdentityTenantId" -Value $($payload.tid)
             }
         }
         Write-Host "Registeration complete for:" `n "Client ID: " $($payload.appid) `n "Tenant ID: " $($payload.tid) `n
     } 
    

    Это важно

    Для экземпляров SQL Server, работающих в группе доступности Always On или в конфигурации экземпляра отказоустойчивого кластера, запустите сценарий PowerShell локально на каждом узле.

  3. Подключитесь к локальному экземпляру SQL Server 2025. При подключении выберите сертификат сервера trust.

  4. Просмотр управляемых удостоверений:

    SELECT *
    FROM sys.dm_server_managed_identities;
    

    Это должно возвращать 1 строку с правильным client_id и tenant_id. Identity_type должно иметь значение "Назначаемое системой".

Добавление разрешений управляемых удостоверений в Microsoft Fabric

Управляемое удостоверение SQL Server создается и автоматически получает разрешения от Microsoft Fabric.

Однако для экземпляров SQL Server, работающих в группе доступности Always On или конфигурации экземпляра отказоустойчивого кластера, назначаемому системой управляемому удостоверению (SAMI) каждого дополнительного узла необходимо предоставить разрешения соавтора рабочей области Fabric. Управляемое удостоверение создается с помощью скрипта PowerShell, который предоставляется для каждого вторичного узла, и этому удостоверению необходимо вручную предоставить разрешения Fabric.

  1. На портале Fabric предоставьте разрешения Fabric управляемому удостоверению каждого вторичного узла.
    1. В рабочей области Fabric выберите "Управление доступом".

      Снимок экрана из портала Fabric, на котором отображается кнопка

    2. Выберите " Добавить людей или группы".

    3. В диалоговом окне "Добавление людей" найдите имена серверов для каждого узла в группе доступности или отказоустойчивом кластере.

    4. Назначьте каждой учетной записи роль участника.

      Снимок экрана: диалоговое окно

Настройка локального шлюза данных

Проверьте требования к сети для Fabric, чтобы получить доступ к SQL Server. Для зеркального отображения данных необходимо установить локальный шлюз данных . Убедитесь, что сеть локального компьютера шлюза может подключаться к экземпляру SQL Server. Дополнительные сведения см. в статье "Практическое руководство. Защита зеркальных баз данных Microsoft Fabric из SQL Server".

  1. Скачайте локальный шлюз данных из Официального центра загрузки Майкрософт.
  2. Запустите установку. Следуйте инструкциям по установке локального шлюза данных.
    • Укажите адрес электронной почты учетной записи Майкрософт.
    • Имя: MyOPDG или любое нужное имя.
    • Ключ восстановления: укажите надежный ключ восстановления.

Создание зеркального SQL Server

  1. Откройте портал «Fabric».
  2. Используйте существующую рабочую область или создайте новую рабочую область.
  3. Перейдите в панель Создания. Щелкните значок "Создать".
  4. Прокрутите страницу, чтобы выбрать зеркальную базу данных SQL Server.
  5. Введите имя базы данных SQL Server для зеркалирования, затем выберите Создать.

Подключите Fabric к вашему экземпляру SQL Server

Чтобы включить зеркальное отображение, необходимо подключиться к экземпляру SQL Server из Fabric, чтобы инициировать подключение из Fabric. Ниже приведены инструкции по созданию подключения к SQL Server.

  1. В разделе "Новые источники" выберите базу данных SQL Server. Или выберите существующее подключение SQL Server из концентратора OneLake.

  2. Если вы выбрали новое подключение, введите сведения о подключении к экземпляру SQL Server.

    • Сервер. Полный путь к имени сервера, который Fabric будет использовать для доступа к экземпляру SQL Server, то же самое, что и для SSMS.

    Подсказка

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

    • База данных: введите имя SQL Server.
      • Подключение: создание нового подключения.
      • Имя подключения: автоматическое имя предоставляется. Его можно изменить.
      • Шлюз данных: Выберите локальный шлюз данных, настроенный в соответствии с вашим сценарием.
      • Тип проверки подлинности: выберите метод проверки подлинности и укажите основного пользователя, которого вы настроили в разделе "Использование имени входа и сопоставленного пользователя базы данных".
      • Установите флажок "Использовать зашифрованное подключение ".
  3. Нажмите Подключиться.

Это важно

Все детализированные средства безопасности, установленные в исходной базе данных, должны быть перенастроены в зеркальной базе данных в Microsoft Fabric. Дополнительные сведения см. в статье "Практическое руководство. Защита зеркальных баз данных Microsoft Fabric из SQL Server".

Запуск процесса зеркалирования

  1. Экран "Настройка зеркального отображения" позволяет зеркально отображать все данные в базе данных по умолчанию.

    • Зеркальное отображение всех данных означает, что все новые таблицы, созданные после запуска зеркального отображения, будут зеркально отображаться.

    • При необходимости выберите только определенные объекты для зеркального отображения. Отключите параметр "Зеркальное отображение всех данных", а затем выберите отдельные таблицы из базы данных.

    В этом руководстве мы выбираем параметр "Зеркальное отображение всех данных ".

  2. Выберите "Создать зеркальную базу данных". Начинается зеркальное отображение.

  3. Подождите 2-5 минут. Затем выберите "Мониторинг репликации ", чтобы просмотреть состояние.

  4. Через несколько минут состояние должно измениться на "Выполнение", что означает синхронизацию таблиц.

    Если таблицы и соответствующее состояние репликации не отображаются, подождите несколько секунд и обновите панель.

  5. После завершения первоначального копирования таблиц дата появится в столбце Последнее обновление.

  6. Теперь, когда ваши данные работают в полном объёме, доступны различные сценарии аналитики по всему Fabric.

Мониторинг зеркального отображения структуры

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

Для получения дополнительной информации и подробностей о состояниях репликации см. раздел Мониторинг зеркальной репликации баз данных в Fabric.

Снимок экрана из портала Fabric, показывающий состояние репликации новой зеркальной базы данных SQL Server.

Проверка данных в OneLake

Теперь, когда функция зеркального отображения Fabric активирована, вы можете выполнять запросы к базе данных SQL Server с помощью Microsoft Fabric. Дополнительные сведения см. в статье "Изучение данных в зеркальной базе данных с помощью Microsoft Fabric".

Снимок экрана: запрос данных в зеркальной базе данных SQL Server с конечной точкой аналитики SQL.