Compartir a través de


Introducción a las consultas entre bases de datos (particiones verticales) (versión preliminar)

Se aplica a:Azure SQL Database

La consulta de base de datos elástica (versión preliminar) para Azure SQL Database le permite ejecutar consultas T-SQL que distribuyen varias bases de datos con un único punto de conexión. Este artículo se aplica a bases de datos con particiones verticales. En este artículo, aprenderá a configurar y usar una instancia de Azure SQL Database para realizar consultas que abarquen varias bases de datos relacionadas.

Para más información sobre la característica de consulta de bases de datos elásticas, consulte información general de consultas elásticas de Azure SQL Database (versión preliminar).

Requisitos previos

Se requiere el permiso ALTER ANY EXTERNAL DATA SOURCE. Este permiso está incluido en el permiso ALTER DATABASE. Se necesitan permisos ALTER ANY EXTERNAL DATA SOURCE para hacer referencia al origen de datos subyacente.

Crear las base de datos de ejemplo

Para empezar, cree dos bases de datos, Customers y Orders, ya sea en los mismos servidores lógicos o diferentes.

Ejecute las siguientes consultas en la base de datos Orders para crear la tabla OrderInformation y escribir los datos de ejemplo.

CREATE TABLE [dbo].[OrderInformation](
    [OrderID] [int] NOT NULL,
    [CustomerID] [int] NOT NULL
    )
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (123, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (149, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (857, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (321, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (564, 8)

Ahora, ejecute la siguiente consulta en la base de datos Customers para crear la tabla CustomerInformation y escribir los datos de ejemplo.

CREATE TABLE [dbo].[CustomerInformation](
    [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NULL,
    [Company] [varchar](50) NULL
    CONSTRAINT [CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC)
)
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (1, 'Jack', 'ABC')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (2, 'Steve', 'XYZ')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (3, 'Lylla', 'MNO')

Creación de objetos de base de datos

Clave maestra y credenciales de ámbito de base de datos

  1. Abra SQL Server Management Studio o SQL Server Data Tools en Visual Studio.

  2. Conéctese a la base de datos Pedidos y ejecute los siguientes comandos de T-SQL:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';  
    
    • El master_key_password es una contraseña segura de su elección que se usa para cifrar las credenciales de conexión.
    • Los username y password deben ser el nombre de usuario y la contraseña que se usan para iniciar sesión en la base de datos Customers (cree un nuevo usuario en la base de datos Customers si aún no existe).
    • La autenticación mediante el identificador de Entra de Microsoft (anteriormente Azure Active Directory) con consultas elásticas no se admite actualmente.

Orígenes de datos externos

Para crear un origen de datos externo, ejecute el siguiente comando en la base de datos Orders para conectarse a la base de datos de Customers. Proporcione el servidor lógico de Azure SQL para la base de datos Customers en LOCATION.

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'Customers',
    CREDENTIAL = ElasticDBQueryCred
);

Tablas externas

Cree una tabla externa en la base de datos de Orders, que coincida con la definición de la tabla CustomerInformation:

CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NOT NULL,
    [Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)

Consultas remotas

Use el procedimiento almacenado sp_execute_remote para ejecutar una instrucción Transact-SQL en una sola base de datos remota de Azure SQL Database o un conjunto de bases de datos que actúan como particiones en un esquema de partición horizontal. La siguiente consulta T-SQL remota devuelve datos de la tabla OrderInformation externa.

EXEC sp_execute_remote
    N'MyElasticDBQueryDataSrc',
    N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';

Ejecución de la consulta de T-SQL de la base de datos elástica de ejemplo

Una vez definido el origen de datos externo y las tablas externas, ahora puede usar T-SQL para consultar las tablas externas. Ejecute esta consulta en la base de datos de Orders:

SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;

Coste

En la actualidad, la característica de consulta de base de datos elástica se incluye en el costo de su base de datos de Azure SQL.

Para obtener información de precios, consulte Precios de SQL Database.