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.

När du är klar 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 databasfrågor i Azure SQL Database.

Förutsättningar

ÄNDRA BEHÖRIGHETEN EXTERN DATAKÄLLA 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, Kunder och Beställningar, antingen på samma eller på olika servrar.

Kör följande frågor i databasen Beställningar 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 i databasen Kunder 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

Databasomfattande huvudnyckel 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. Användarnamnet och lösenordet ska vara användarnamnet och lösenordet som används för att logga in i 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 i databasen Beställningar:

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 databasen Beställningar, 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)

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 i databasen Beställningar:

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 Prissättning för SQL Database.

Nästa steg