Dela via


Kom igång med frågor mellan databaser (vertikal partitionering) (förhandsversion)

gäller för:Azure SQL Database

Med elastisk databasfråga (förhandsversion) för Azure SQL Database kan du köra T-SQL-frågor som sträcker sig över flera databaser med en enda anslutningspunkt. Den här artikeln gäller för vertikalt partitionerade databaser. I den här artikeln får du lära dig hur du konfigurerar och använder en Azure SQL Database för att utföra frågor som omfattar flera relaterade databaser.

Mer information om frågefunktionen för elastisk databas finns i översikt över elastiska frågor i Azure SQL Database (förhandsversion).

Förutsättningar

Behörigheten ALTER ANY EXTERNAL DATA SOURCE krävs. Den här behörigheten ingår i alter database-behörigheten. ÄNDRA EVENTUELLA BEHÖRIGHETER FÖR EXTERN DATAKÄLLA krävs för att referera till den underliggande datakällan.

Skapa exempeldatabaserna

Börja med att skapa två databaser, Customers och Orders, antingen på samma eller olika logiska servrar.

Kör följande frågor på Orders-databasen för att skapa tabellen OrderInformation och mata in exempeldata.

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)

Kör nu följande fråga på Customers-databasen för att skapa tabellen CustomerInformation och mata in exempeldata.

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')

Skapa databasobjekt

Databasavgränsad masternyckel och autentiseringsuppgifter

  1. Öppna SQL Server Management Studio eller SQL Server Data Tools i Visual Studio.

  2. Anslut till databasen Orders och kör följande T-SQL-kommandon:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';  
    
    • master_key_password är ett starkt lösenord som du väljer för att kryptera autentiseringsuppgifterna för anslutningen.
    • username och password ska vara användarnamnet och lösenordet som används för att logga in på kunddatabasen (skapa en ny användare i kunddatabasen om det inte redan finns).
    • Autentisering med Microsoft Entra-ID (tidigare Azure Active Directory) med elastiska frågor stöds inte för närvarande.

Externa datakällor

Om du vill skapa en extern datakälla kör du följande kommando på Orders-databasen för att ansluta till Customers-databasen. Ange den logiska Azure SQL-servern för Customers-databasen i LOCATION.

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

Externa tabeller

Skapa en extern tabell i Orders-databasen, som matchar definitionen av tabellen CustomerInformation:

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

Fjärrfrågor

Använd den sp_execute_remote lagrade proceduren för att köra en Transact-SQL-instruktion på en enda fjärransluten Azure SQL Database eller uppsättning databaser som fungerar som shards i ett horisontellt partitioneringsschema. Följande fjärranslutna T-SQL-fråga returnerar data från den externa OrderInformation-tabellen.

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

Köra en T-SQL-exempelfråga för elastisk databas

När du har definierat din externa datakälla och dina externa tabeller kan du nu använda T-SQL för att fråga dina externa tabeller. Kör den här frågan på Orders-databasen:

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

Kostnad

För närvarande ingår den elastiska databasfrågefunktionen i kostnaden för din Azure SQL Database.

Prisinformation finns i SQL Database Pricing.