Vorgehensweise: Erstellen eines Verbunds in der Windows Azure SQL-Datenbank
SQL-Datenbanken mit Verbund ermöglichen durch horizontale Partitionierung auf der Datenbankebene der Anwendung eine höhere Skalierbarkeit und Leistung. Eine oder mehrere Tabellen in einer Datenbank mit Verbund werden nach Zeilen unterteilt und auf mehrere Datenbanken aufgeteilt, die als Verbundmitglieder bezeichnet werden. Ein Verbund wird durch ein Verbundverteilungsschema oder Verbundschema definiert. Das Verbundschema definiert einen Verbundverteilungsschlüssel, der die Verteilung von Daten auf Partitionen im Verbund bestimmt. Weitere Informationen zu Verbunden finden Sie unter Verbunde in der Windows Azure SQL-Datenbank (früher SQL Azure).
Administratoren können das Windows Azure Platform-Verwaltungsportal oder SQL Server Management Studio verwenden, um Verbunde zu erstellen und andere verwandte Vorgänge durchzuführen.
Erstellen der Verbundstammdatenbank
Der Verbundstamm bezeichnet den logischen Namen der Datenbank, in der das Verbundobjekt verwaltet wird und die als zentrales Informationsrepository für die Verteilung der skalierten Daten dient. Zum Erstellen einer Verbundstammdatenbank stellen Sie zunächst eine Verbindung mit der Masterdatenbank eines SQL-Datenbankservers her und führen anschließend die T-SQL-Anweisung CREATE DATABASE (Windows Azure SQL-Datenbank) aus:
-- Create federation root database CREATE DATABASE [database_name]
Erstellen des Verbunds und Verbundschemas
Ein Verbund kann in einer beliebigen Datenbank erstellt werden. In einer einzelnen Datenbank kann eine Vielzahl von Verbunden verwaltet werden. Zum Erstellen des Verbundschemas stellen Sie zunächst eine Verbindung mit der Verbundstammdatenbank her und führen anschließend die T-SQL-Anweisung CREATE FEDERATION (Windows Azure SQL-Datenbank) aus:
-- Create federation scheme CREATE FEDERATION federation_name (distribution_name <data_type> RANGE)
Der Verbundverteilungsschlüssel muss vom Typ INT, BIGINT, UNIQUEIDENTIFIER oder VARBINARY (bis zu 900 Bytes) sein, und er gibt einen Bereichswert an. Für einen Verbund können nur ein Verbundschema und ein Verbundverteilungsschlüssel vorhanden sein.
Herstellen einer Verbindung mit einem Verbund
Bevor Sie eine Tabelle in einem Verbund erstellen oder Lese- und Schreibvorgänge ausführen können, müssen Sie eine Verbindung mit einem Verbundmitglied herstellen. Die T-SQL-Anweisung zum Herstellen einer Verbindung mit einem Verbund lautet USE FEDERATION (Windows Azure SQL-Datenbank).
Zum Herstellen der Verbindung mit dem Verbundstamm stellen Sie zunächst eine Verbindung mit der Verbundstammdatenbank her und führen anschließend die folgende Anweisung aus:
USE FEDERATION ROOT WITH RESET
Zum Herstellen der Verbindung mit einem Verbundmitglied stellen Sie außerdem zunächst eine Verbindung mit der Verbundstammdatenbank her und führen anschließend die folgende Anweisung aus:
USE FEDERATION federation_name (distribution_name = value)
WITH FILTERING={ON|OFF}, RESET
Erstellen einer Verbundtabelle
Die FEDERATED ON-Klausel der CREATE TABLE (Windows Azure SQL-Datenbank)-Anweisung erstellt die Tabelle als Verbundtabelle innerhalb eines SQL-Datenbankverbunds und wendet die Verteilungseinschränkung (distribution_name) für den Verbund auf die angegebene Verbundspalte in der Tabelle (column_name) an:
-- Route connection to federation member
USE FEDERATION federation_name(distribution_name = value) WITH RESET, FILTERING={ON|OFF}
GO
CREATE TABLE
[ schema_name . ] table_ame
( { <column_definition> | <computed_column_definition> }
[ < table_constraint> ] [ ,...n ] )
FEDERATED ON (distribution_name = column_name)
GO
Anzeigen von Verbundmetadaten
Verwenden Sie zum Abrufen der Verbundstammmetadaten die folgenden Anweisungen, nachdem Sie eine Verbindung mit der Verbundstammdatenbank hergestellt haben.
-- Route connection to federation root USE FEDERATION ROOT WITH RESET GO -- View the Federation Root metadata SELECT db_name() [db_name] SELECT * FROM sys.federations SELECT * FROM sys.federation_distributions SELECT * FROM sys.federation_member_distributions ORDER BY federation_id, range_low; GO
Durchführen eines SPLIT-Vorgangs für einen Verbund
Wenn eine Datenbank ihre Größenbeschränkung erreicht oder Sie die Leistung verbessern möchten, können Sie einen Verbund mit der ALTER FEDERATION (Windows Azure SQL-Datenbank)-Anweisung aufteilen:
--Perform the federation SPLIT operation USE FEDERATION ROOT WITH RESET GO ALTER FEDERATION federation_name SPLIT AT (boundery_value) GO
Beispiel
Im folgenden Codebeispiel wird der Prozess zum Erstellen einer Datenbank mit Verbund veranschaulicht.
Stellen Sie zuerst eine Verbindung mit der Masterdatenbank her, und verwenden Sie dann die folgenden T-SQL-Anweisungen, um die Verbundstammdatenbank zu erstellen:
-- Create Federation Root CREATE DATABASE [AdventureWorks] GO
Stellen Sie anschließend eine Verbindung mit der Verbundstammdatenbank her, und verwenden Sie die folgenden T-SQL-Anweisungen, um das Verbundschema zu erstellen und einige Testdaten einzufügen:
-- Create Federation scheme
CREATE FEDERATION CustomerFederation(cid BIGINT RANGE)
GO
-- Route connection to the one Federation Member
USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
GO
-- Table [dbo].[Customer]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[CustomerID] [bigint] NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [nvarchar](50) NOT NULL,
[MiddleName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NOT NULL,
[Suffix] [nvarchar](10) NULL,
[CompanyName] [nvarchar](128) NULL,
[SalesPerson] [nvarchar](256) NULL,
[EmailAddress] [nvarchar](50) NULL,
[Phone] [nvarchar](25) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)
)FEDERATED ON (cid=CustomerID)
GO
-- Route connection to the Federation Member
USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
GO
-- Insert data
INSERT INTO [dbo].[Customer]
([CustomerID]
,[Title]
,[FirstName]
,[MiddleName]
,[LastName]
,[Suffix]
,[CompanyName]
,[SalesPerson]
,[EmailAddress]
,[Phone])
VALUES
(56, 'Mr.', 'Brian', '', 'Groth', '', 'Latest Accessories Sales', 'adventure-works\david8', 'brian5@adventure-works.com', '461-555-0118'),
(57, 'Ms.', 'Judy', 'R.', 'Lundahl', '', 'Leading Sales & Repair', 'adventure-works\jillian0', 'judy1@adventure-works.com', '260-555-0130'),
(58, 'Mr.', 'Peter', '', 'Kurniawan', '', 'Largest Bike Store', 'adventure-works\jillian0', 'peter4@adventure-works.com', '436-555-0160'),
(59, 'Mr.', 'Douglas', '', 'Groncki', '', 'Locks Company', 'adventure-works\shu0', 'douglas2@adventure-works.com', '385-555-0140'),
(60, 'Mr.', 'Sean', 'J.', 'Lunt', '', 'Main Bicycle Services', 'adventure-works\linda3', 'sean4@adventure-works.com', '183-555-0111'),
(61, 'Mr.', 'Jeffrey', '', 'Kurtz', '', 'Many Bikes Store', 'adventure-works\shu0', 'jeffrey3@adventure-works.com', '452-555-0179'),
(64, 'Mr.', 'Vamsi', '', 'Kuppa', '', 'Metal Clearing House', 'adventure-works\jos‚1', 'vamsi1@adventure-works.com', '290-555-0196'),
(65, 'Ms.', 'Jane', 'P.', 'Greer', '', 'Metro Manufacturing', 'adventure-works\jos‚1', 'jane2@adventure-works.com', '737-555-0163'),
(66, 'Mr.', 'Alexander', 'J.', 'Deborde', '', 'Neighborhood Store', 'adventure-works\garrett1', 'alexander1@adventure-works.com', '394-555-0176'),
(70, 'Mr.', 'Deepak', '', 'Kumar', '', 'Outdoor Aerobic Systems Company', 'adventure-works\jae0', 'deepak0@adventure-works.com', '1 (11) 500 555-0122'),
(73, 'Ms.', 'Margaret', 'T.', 'Krupka', '', 'Outdoor Sports Supply', 'adventure-works\pamela0', 'margaret1@adventure-works.com', '107-555-0132'),
(74, 'Mr.', 'Christopher', 'M.', 'Bright', '', 'Parcel Express Delivery Service', 'adventure-works\david8', 'christopher2@adventure-works.com', '162-555-0166'),
(75, 'Ms.', 'Aidan', '', 'Delaney', '', 'Paint Supply', 'adventure-works\jillian0', 'aidan0@adventure-works.com', '358-555-0188'),
(76, 'Mr.', 'James', 'J.', 'Krow', '', 'Out-of-the-Way Hotels', 'adventure-works\jillian0', 'james11@adventure-works.com', '265-555-0190'),
(77, 'Mr.', 'Michael', '', 'Brundage', '', 'Mechanical Products Ltd.', 'adventure-works\shu0', 'michael13@adventure-works.com', '128-555-0148'),
(78, 'Mr.', 'Stefan', '', 'Delmarco', '', 'Preferred Bikes', 'adventure-works\linda3', 'stefan0@adventure-works.com', '819-555-0186'),
(79, 'Mr.', 'Mitch', '', 'Kennedy', '', 'Reasonable Bicycle Sales', 'adventure-works\shu0', 'mitch0@adventure-works.com', '996-555-0192'),
(82, 'Mr.', 'James', 'D.', 'Kramer', '', 'Refined Department Stores', 'adventure-works\jos‚1', 'james10@adventure-works.com', '814-555-0130'),
(83, 'Mr.', 'Eric', 'J.', 'Brumfield', '', 'Requisite Part Supply', 'adventure-works\jos‚1', 'eric3@adventure-works.com', '644-555-0114'),
(84, 'Ms.', 'Della', 'F.', 'Demott Jr', '', 'Rewarding Activities Company', 'adventure-works\garrett1', 'della0@adventure-works.com', '752-555-0185'),
(88, 'Ms.', 'Pamala', 'M.', 'Kotc', '', 'Closest Bicycle Store', 'adventure-works\jae0', 'pamala0@adventure-works.com', '1 (11) 500 555-0173'),
(91, 'Ms.', 'Joy', 'R.', 'Koski', '', 'Scooters and Bikes Store', 'adventure-works\pamela0', 'joy0@adventure-works.com', '810-555-0198'),
(92, 'Ms.', 'Jovita', 'A.', 'Carmody', '', 'Sports Commodities', 'adventure-works\david8', 'jovita0@adventure-works.com', '646-555-0137'),
(93, 'Mr.', 'Prashanth', '', 'Desai', '', 'Stationary Bikes and Stands', 'adventure-works\jillian0', 'prashanth0@adventure-works.com', '138-555-0156'),
(94, 'Mr.', 'Scott', '', 'Konersmann', '', 'Specialty Sports Store', 'adventure-works\jillian0', 'scott6@adventure-works.com', '556-555-0192'),
(96, 'Ms.', 'Jane', 'N.', 'Carmichael', '', 'Rural Department Store', 'adventure-works\shu0', 'jane0@adventure-works.com', '716-555-0167'),
(97, 'Ms.', 'Bonnie', 'B.', 'Lepro', '', 'More Bikes!', 'adventure-works\linda3', 'bonnie2@adventure-works.com', '354-555-0130'),
(99, 'Mr.', 'Eugene', '', 'Kogan', '', 'Mountain Bike Center', 'adventure-works\shu0', 'eugene2@adventure-works.com', '136-555-0134'),
(100, 'Mr.', 'Kirk', 'T', 'King', '', 'Up-To-Date Sports', 'adventure-works\jos‚1', 'kirk2@adventure-works.com', '979-555-0163');
GO
Führen Sie mithilfe der folgenden T-SQL-Anweisungen einen SPLIT-Vorgang aus:
--Perform Federations SPLIT operation USE FEDERATION ROOT WITH RESET GO ALTER FEDERATION CustomerFederation SPLIT AT (cid=80) GO
Siehe auch
Konzepte
Verbundanweisungen (Windows Azure SQL-Datenbank)Verbunde in der Windows Azure SQL-Datenbank (früher SQL Azure)
Verwalten von Datenbankverbunden (Windows Azure SQL-Datenbank)
Verbundrichtlinien und -einschränkungen
Überlegungen zur Entwicklung für Datenbankverbunde (Windows Azure SQL-Datenbank)