Compartir a través de


Tutorial: Configurar bases de datos duplicadas de Microsoft Fabric desde SQL Server

Creación de reflejo en Fabric es una tecnología empresarial, basada en la nube, cero ETL y SaaS. En esta sección, aprenderá a crear una base de datos reflejada de SQL Server, que genera una copia de solo lectura y replicada continuamente de sus datos de SQL Server en OneLake.

Importante

Esta característica se encuentra en versión preliminar.

Prerrequisitos

Entidad de seguridad de base de datos para Fabric

A continuación, debe crear una manera de que el servicio Fabric se autentique en la instancia de SQL Server.

Puede hacerlo con un usuario base de datos asignado y de inicio de sesión.

Uso de un usuario de base de datos asignado y de inicio de sesión

Siga estas instrucciones para SQL Server 2025 o SQL Server 2016-2022 para crear un inicio de sesión y un usuario de base de datos para el reflejo de base de datos.

  1. Conéctese a la instancia de SQL Server mediante una herramienta de consulta de T-SQL como SQL Server Management Studio (SSMS) o la extensión mssql con Visual Studio Code.

  2. Conéctese a la base de datos master. Cree un inicio de sesión de servidor y asigne los permisos adecuados.

    • Cree un inicio de sesión autenticado de SQL denominado fabric_login. Puede elegir cualquier nombre para este inicio de sesión. Proporcione su propia contraseña segura. Ejecute el siguiente script de T-SQL en la base de datos de master:
    CREATE LOGIN [fabric_login] WITH PASSWORD = '<strong password>';
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER [fabric_login];
    
    • O bien, inicie sesión como administrador de Microsoft Entra y cree un inicio de sesión autenticado de Microsoft Entra ID desde una cuenta existente. Ejecute el siguiente script de T-SQL en la base de datos de master:
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER;
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER [bob@contoso.com];
    
  3. Conéctese a la base de datos de usuario que planea reflejar en Microsoft Fabric. Cree un usuario de base de datos conectado al inicio de sesión y conceda los privilegios mínimos necesarios:

    Para un inicio de sesión autenticado de 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];
    

    O bien, para un inicio de sesión autenticado de Microsoft Entra (recomendado):

    CREATE USER [bob@contoso.com] FOR LOGIN [bob@contoso.com];
    GRANT SELECT, ALTER ANY EXTERNAL MIRROR, 
       VIEW SERVER SECURITY STATE, VIEW DATABASE SECURITY STATE, VIEW PERFORMANCE DEFINITION TO [bob@contoso.com];
    

Conexión a SQL Server

Las instrucciones y los requisitos para configurar una base de datos reflejada en Fabric de SQL Server difieren en SQL Server 2025. En SQL Server 2025, un servidor habilitado para Azure Arc forma parte de la configuración necesaria para la comunicación con Fabric. Antes de SQL Server 2025, Azure Arc no es necesario y la replicación se basa en la captura de datos modificados (CDC).

Conexión del servidor a Azure Arc y habilitación de la administración de identidades

Para configurar el Mirroring de Fabric, debe configurar Azure Arc para la instancia de SQL Server 2025.

  1. Conecte el servidor a Azure Arc. Siga los pasos descritos en Inicio rápido: Conexión de una máquina híbrida con servidores habilitados para Azure Arc.

    En el caso de las instancias de SQL Server que se ejecutan en un grupo de disponibilidad Always On o en una instancia de clúster de conmutación por error, todos los nodos deben estar conectados a Azure Arc.

  2. Se necesitan tres claves del Registro en Windows Server que hospeda la instancia de SQL Server de origen para habilitar el reflejo de Fabric. Las claves del Registro incluyen información sobre la identidad administrada asignada por el sistema (SAMI) para Windows Server. El siguiente script de PowerShell agrega tres claves del Registro, los permisos necesarios del sistema de archivos y las identidades administradas.

    Nota:

    Esta sección contiene un script para modificar el Registro de Windows. Asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, realice una copia de seguridad del registro antes de modificarlo. Luego, puedes restaurar el registro si ocurre un problema. Para obtener más información sobre cómo hacer una copia de seguridad y restaurar el registro, consulta Cómo hacer una copia de seguridad y restaurar el registro en Windows.

    Las tres claves del Registro se agregan en la siguiente ubicación:

    • Para una instancia predeterminada: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\FederatedAuthentication
    • Para una instancia con nombre: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.Instancename\MSSQLServer\FederatedAuthentication

    El script agrega las claves siguientes:

    • ArcServerManagedIdentityClientId
    • ArcServerSystemAssignedManagedIdentityClientId
    • ArcServerSystemAssignedManagedIdentityTenantID

    Ejecute el siguiente script de PowerShell para configurar la identidad administrada asignada por el sistema (SAMI) y las claves del Registro necesarias en Windows Server que hospeda la instancia de SQL Server de origen.

     $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
     } 
    

    Importante

    En el caso de las instancias de SQL Server que se ejecutan en un grupo de disponibilidad Always On o en una configuración de instancia de clúster de conmutación por error, ejecute el script de PowerShell localmente en cada nodo.

  3. Conéctese a la instancia local de SQL Server 2025. Al conectarse, seleccione Confiar en el certificado de servidor.

  4. Vea las identidades administradas:

    SELECT *
    FROM sys.dm_server_managed_identities;
    

    Esto debe devolver 1 fila con los valores correctos client_id y tenant_id. Identity_type debe ser "Asignado automáticamente por el sistema".

Adición de permisos de identidades administradas en Microsoft Fabric

Microsoft Fabric crea y concede automáticamente permisos a la identidad administrada de SQL Server.

Sin embargo, para las instancias de SQL Server que se ejecutan en un grupo de disponibilidad Always On o en una configuración de instancia de clúster de conmutación por error, la identidad administrada asignada por el sistema (SAMI) de cada nodo secundario tiene que conceder permisos de colaborador al área de trabajo de Fabric. La identidad administrada es creada mediante el script de PowerShell proporcionado para cada nodo secundario, y a esta se le deben conceder permisos de Fabric manualmente.

  1. En el portal de Fabric, conceda permisos de Fabric a la identidad administrada de cada nodo secundario.
    1. En el espacio de trabajo de Fabric, seleccione Administrar acceso.

      Captura de pantalla del portal de Fabric del botón Administrar acceso.

    2. Seleccione Agregar personas o grupos.

    3. En el cuadro de diálogo Agregar usuarios, busque los nombres de servidor de cada nodo del grupo de disponibilidad o clúster de conmutación por error.

    4. Conceda cada pertenencia al rol Colaborador .

      Captura de pantalla del cuadro de diálogo Agregar personas, donde se añade cada nodo al rol de Colaborador de Fabric.

Configuración de la puerta de enlace de datos local

Compruebe los requisitos de red para que Fabric acceda a SQL Server. Debe instalar una puerta de enlace de datos local para reflejar los datos. Asegúrese de que la red de la máquina de puerta de enlace local puede conectarse a la instancia de SQL Server. Para obtener más información, vea Cómo: Proteger bases de datos reflejadas de Microsoft Fabric desde SQL Server.

  1. Descargue la puerta de enlace de datos local desde el Centro de descarga oficial de Microsoft.
  2. Inicie la instalación. Siga las instrucciones de Instalación de una puerta de enlace de datos local.
    • Proporcione la dirección de correo electrónico de la cuenta Microsoft.
    • Nombre: MyOPDG o cualquier nombre que desee.
    • Clave de recuperación: proporcione una clave de recuperación segura.

Crear un SQL Server reflejado

  1. Abra el portal de Fabric.
  2. Use un área de trabajo existente o cree una.
  3. Vaya al panel Crear . Seleccione el icono Crear .
  4. Desplácese para seleccionar La base de datos de SQL Server reflejada.
  5. Escriba el nombre de la base de datos de SQL Server que se va a reflejar y, a continuación, seleccione Crear.

Conexión de Fabric a la instancia de SQL Server

Para habilitar la creación de reflejo, deberá conectarse a la instancia de SQL Server desde Fabric para iniciar la conexión desde Fabric. Los pasos siguientes le guían por el proceso de creación de la conexión a SQL Server:

  1. En Nuevos orígenes, seleccione Base de datos de SQL Server. O bien, seleccione una conexión de SQL Server existente desde el centro de OneLake.
  2. Si seleccionó Nueva conexión, escriba los detalles de conexión a la instancia de SQL Server.
    • Servidor: la ruta de acceso completa al nombre del servidor que Fabric utilizará para acceder a tu instancia de SQL Server, es la misma que usarías para SSMS.
    • Base de datos: escriba el nombre de SQL Server.
    • Conexión: cree una nueva conexión.
    • Nombre de conexión: se proporciona un nombre automático. Puede cambiarla.
    • Puerta de enlace de datos: Seleccione la puerta de enlace de datos local que configuró según su escenario.
    • Tipo de autenticación: elija el método de autenticación y proporcione el principal que configuró en Usar un inicio de sesión y un usuario de base de datos asignado.
    • Active la casilla Usar conexión cifrada .
  3. Seleccione Conectar.

Importante

Cualquier seguridad granular establecida en la base de datos de origen debe volver a configurarse en la base de datos reflejada en Microsoft Fabric. Para obtener más información, vea Cómo: Proteger bases de datos reflejadas de Microsoft Fabric desde SQL Server.

Inicio del proceso de creación de reflejo

  1. La pantalla Configurar creación de reflejo permite reflejar todos los datos de la base de datos de forma predeterminada.

    • Reflejar todos los datos significa que cualquier nueva tabla creada después de iniciar el reflejo se reflejará.

    • Opcionalmente, elija solo determinados objetos que se van a reflejar. Deshabilite la opción Reflejar todos los datos y, a continuación, seleccione tablas individuales de la base de datos.

    En este tutorial, seleccionamos la opción Reflejar todos los datos .

  2. Seleccione Crear base de datos reflejada. Comienza la creación de reflejo.

  3. Espere entre 2 y 5 minutos. A continuación, seleccione Supervisar replicación para ver el estado.

  4. Después de unos minutos, el estado debe cambiar a En ejecución, lo que significa que las tablas se están sincronizando.

    Si no ve las tablas y el estado de replicación correspondiente, espere unos segundos y luego actualice el panel.

  5. Cuando hayan terminado la copia inicial de las tablas, aparecerá una fecha en la columna Última actualización .

  6. Ahora que los datos están en funcionamiento, hay varios escenarios de análisis disponibles en Fabric.

Supervisión de la creación de reflejo de Fabric

Una vez configurado el reflejo, se le dirigirá a la página Estado de reflejo. Aquí puede supervisar el estado actual de la replicación.

Para más información y detalles acerca de los estados de replicación, consulte Supervisión de la replicación de la base de datos reflejada de Fabric.

Captura de pantalla del portal de Fabric que muestra el estado de replicación del monitor de la nueva base de datos de SQL Server con espejo.

Validar datos en OneLake

Con Mirroring de Fabric activo, puede ahora consultar desde su base de datos de SQL Server en Microsoft Fabric. Para obtener posibilidades, consulte Exploración de datos en la base de datos reflejada mediante Microsoft Fabric.

Captura de pantalla de la consulta de datos en una base de datos de SQL Server reflejada con el punto de conexión de SQL Analytics.