Introduzione alle query tra database (partizionamento verticale) (anteprima)
Si applica a:Database SQL di Azure
La query del database elastico (anteprima) per il database SQL di Azure consente di eseguire query T-SQL che si estendono a più database usando un unico punto di connessione. Questo articolo si applica ai database con partizionamento verticale. Questo articolo illustra come configurare e usare un database SQL di Azure per eseguire query che si estendono su più database correlati.
Per altre informazioni sulla funzionalità di query del database elastico, vedere panoramica delle query elastiche di Azure SQL Database (anteprima).
Prerequisiti
È necessaria l'autorizzazione ALTER ANY EXTERNAL DATA SOURCE. Questa autorizzazione è inclusa nell'autorizzazione ALTER DATABASE. Per il riferimento all'origine dati sottostante sono necessarie autorizzazioni ALTER ANY EXTERNAL DATA SOURCE.
Creare i database di esempio
Per iniziare, creare due database, Customers
e Orders
, nello stesso server logico o in server logici diversi.
Eseguire le query seguenti nel database Orders
per creare la tabella OrderInformation
e immettere i dati di esempio.
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)
Eseguire ora la query seguente nel database Customers
per creare la tabella CustomerInformation
e immettere i dati di esempio.
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')
Creare oggetti di database
Chiave master e credenziali con ambito database
Apri SQL Server Management Studio e SQL Server Data Tools in Visual Studio
Connettersi al database Orders ed eseguire i comandi T-SQL seguenti:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>'; CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred WITH IDENTITY = '<username>', SECRET = '<password>';
- Il
master_key_password
è una password complessa di propria scelta usata per crittografare le credenziali di connessione. - Il
username
e ilpassword
devono essere il nome utente e la password usati per accedere al database Clienti (creare un nuovo utente nel database Clienti, se non ne esiste già uno). - L'autenticazione con Microsoft Entra ID (in precedenza Azure Active Directory) con query elastiche non è attualmente supportata.
- Il
Origini dati esterne
Per creare un'origine dati esterna, eseguire il comando seguente nel database Orders
per connettersi al database Customers
. Fornire il server logico SQL di Azure del database Customers
nella sezione LOCATION
.
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
(TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = ElasticDBQueryCred
);
Tabelle esterne
Creare una tabella esterna nel database Orders
, che corrisponde alla definizione della tabella CustomerInformation
:
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
Query remoti
Usare la stored procedure sp_execute_remote per eseguire un'istruzione Transact-SQL su un singolo database SQL di Azure remoto o su un insieme di database che servono come shard in uno schema di partizionamento orizzontale. La query T-SQL remota seguente restituisce dati dalla tabella OrderInformation
esterna.
EXEC sp_execute_remote
N'MyElasticDBQueryDataSrc',
N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';
Eseguire una query di esempio elastica database T-SQL
Dopo aver definito l'origine dati esterna e le tabelle esterne, è ora possibile usare T-SQL per eseguire query sulle tabelle esterne. Eseguire questa query nel database Orders
:
SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;
Costo
Attualmente, la funzionalità di query del database elastico è compresa nel costo del database SQL di Azure.
Per informazioni sui prezzi, vedere Database SQL - Prezzi.