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
Öppna SQL Server Management Studio eller SQL Server Data Tools i Visual Studio.
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
ochpassword
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.