Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

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

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.
facebook page visit twitter rss feed newsletter