导出 (0) 打印
全部展开

SQL Database 联合教程 -- DBA

更新时间: 2014年4月

联合是 Microsoft Azure SQL Database 中用于构建向外扩展数据库解决方案的方法之一。联合是数据库中的对象,通过这些对象,应用程序可以向外扩展其部分或所有数据。

Important重要提示
联合的当前实现将随 Web 和企业版一起停用。请考虑部署自定义分片解决方案,来最大限度地提高可伸缩性、灵活性和性能。有关自定义分片的详细信息,请参阅向外扩展 Azure SQL Database

本教程演示使用 Azure SQL Database (SSMS) 创建 SQL Server Management Studio 联合、创建和填充表以及执行拆分操作的过程。在每个主要过程后,你都要复查元数据以便了解每个操作的结果。

在开始本教程之前,你必须完成以下步骤:

虽然本教程说明了如何使用 SSMS,但你还可以选择使用 Azure 管理门户

连接到 SQL Database 服务器

  1. 打开 SQL Server Management Studio。

  2. 在“连接到数据库引擎”对话框中,键入或选择以下值:

     

    Name

    服务器名称

    <提供服务器名称>

    身份验证

    SQL Server 身份验证

    登录

    <提供用户 ID>

    密码

    <提供密码>

  3. 单击“连接”。

若要创建联合,你首先要创建一个数据库作为联合根数据库。该联合根是用于保存联合目录的初始数据库。

创建联合根数据库

  1. 在对象资源管理器中,展开“数据库”,再展开“系统数据库”,然后单击 master

  2. 单击“新建查询”

  3. 确认 SQL 编辑器工具栏上的“可用数据库”显示 master

  4. 在查询编辑器中,复制并粘贴以下 T-SQL 语句:

    -- Create federation root database
    CREATE DATABASE [AdventureWorks1] 
    GO
    
    
  5. 从 SQL 编辑器命令栏中,单击“执行”。请确保“消息”窗格显示“命令已成功完成”

  6. 在对象资源管理器中,右键单击“数据库”,然后单击“刷新”。你应该看到新的数据库在那里列出。

一个联合是由某一联合方案定义的数据库分区的集合。联合方案定义了一个联合分发键,该键可确定联合内部各分区之间的数据分发。你可以在一个联合根内创建多个联合,但每个联合只能具有一个方案。若要创建联合方案,你必须首先连接到联合根数据库,然后执行 CREATE FEDERATION 命令。在本教程中,你将创建一个名为 CustomerFederation 的联合,它具有 cid 的分发名称,后跟 RANGEBIGINT 分区类型。有关联合的其他信息,请参阅 Azure SQL Database 中的联合

创建联合方案

  1. 从 SSMS 中,在查询编辑器(中部窗格)内的任何地方单击。你可以看到 SQL 编辑器工具栏上的按钮将变得可用。

  2. “可用数据库”中,选择你在上一过程中创建的联合根。默认名称是 AdventureWorks1

  3. 清除查询编辑器中的所有文本。

  4. 复制以下语句并将其粘贴到查询编辑器中:

    -- Create federation scheme
    CREATE FEDERATION CustomerFederation(cid BIGINT RANGE)
    GO
    
    
  5. 从 SQL 编辑器命令栏中,单击“执行”。并且确保“消息”窗格显示“命令已成功完成”。

  6. 在对象资源管理器中,右键单击“数据库”,然后单击“刷新”。展开 AdventureWorks1,然后展开“联合”。你将看到一个名为 CustomerFederation 的新联合对象。

为了更好地理解该方案,你可以连接到联合根和联合成员,以便看一下元数据。

查看联合根元数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the 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
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”



    联合的 USE 语句将连接更改为联合根或联合成员之一。上面的 USE 语句将连接路由到联合根。

    第一个 SELECT 语句显示联合根数据库名称。将有一个联合以及一个联合成员。第一个联合成员与联合共享同一 ID。SPLIT 操作所创建的联合成员将具有新的唯一联合 ID。

    请注意,联合成员的范围是从 -9223372036854775808 (range_low) 到 NULL (range_high)。在你执行 SPLIT 操作时,该范围将拆分为两个部分。有一个名为 cid 的联合分发。之后,你将联合键与该联合分发进行匹配。

查看联合成员元数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the one federation member (aka shard)
    USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
    GO
    -- View the federation member metadata
    SELECT db_name() [db_name]
    SELECT * FROM sys.federations
    SELECT * FROM sys.federation_distributions
    SELECT * FROM sys.federation_member_distributions
    -- Federatation ranges
    SELECT f.name, fmc.federation_id, fmc.member_id, fmc.range_low, fmc.range_high 
    FROM sys.federations f
    JOIN sys.federation_member_distributions fmc
    ON f.federation_id=fmc.federation_id
    ORDER BY fmc.federation_id, fmc.range_low;
    GO
    
    
    注意:使用 FILTERING=ON 子句可以连接到特定的原子单元。FILTERING=OFF 子句允许连接到包含其范围内的特定键值的联合成员。

  4. 从 SQL 编辑器命令栏中,单击“执行”



    USE 语句将连接仅路由到联合成员。cid=100 是该范围中的一个值。

    请注意,该数据库名称以“system_”和 GUID 号开头。SPLIT 操作完成后,你将执行相同的查询。每次你执行 SPLIT 操作时,都将创建两个新的联合成员以便替换现有联合成员。有关 SPLIT 操作的详细信息,请参阅联合重新分区操作:执行数据库 SPLIT

到现在为止,你已创建了一个联合。下一步是创建一个联合表,将数据插入该表中,然后执行 SPLIT 操作。在创建联合表之前,必须首先将连接更改为联合成员。

在联合中创建表

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- 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
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。并且确保“消息”窗格显示“命令已成功完成”

USE 语句中,cid=100 是有效的 BIGINT 值。在 CREATE TABLE 语句中,CustomerID 列映射到联合分发键。

填充表

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- 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'),
    (101, 'Mr.', 'William', 'J.', 'Conner', '', 'Urban Sports Emporium', 'adventure-works\jos‚1', 'william1@adventure-works.com', '383-555-0111'),
    (102, 'Ms.', 'Linda', '', 'Leste', '', 'National Manufacturing', 'adventure-works\garrett1', 'linda7@adventure-works.com', '493-555-0134'),
    (106, 'Ms.', 'Andrea', 'A.', 'Thomsen', '', 'West Side Mart', 'adventure-works\jae0', 'andrea1@adventure-works.com', '1 (11) 500 555-0120'),
    (109, 'Mr.', 'Daniel', 'P.', 'Thompson', '', 'Travel Sports', 'adventure-works\pamela0', 'daniel2@adventure-works.com', '247-555-0197'),
    (110, 'Ms.', 'Kendra', 'N.', 'Thompson', '', 'Vintage Sport Boutique', 'adventure-works\david8', 'kendra0@adventure-works.com', '464-555-0188'),
    (111, 'Mr.', 'Scott', 'A.', 'Colvin', '', 'Westside Cycle Store', 'adventure-works\jillian0', 'scott1@adventure-works.com', '119-555-0144'),
    (168, 'Sr.', 'Luis', '', 'Bonifaz', '', 'Economy Bikes Company', 'adventure-works\linda3', 'luis0@adventure-works.com', '688-555-0113'),
    (169, 'Ms.', 'Brenda', '', 'Diaz', '', 'Downtown Hotel', 'adventure-works\shu0', 'brenda2@adventure-works.com', '147-555-0192'),
    (172, 'Ms.', 'Gabriele', '', 'Dickmann', '', 'Certified Sports Supply', 'adventure-works\jos‚1', 'gabriele0@adventure-works.com', '835-555-0116'),
    (173, 'Mr.', 'Rudolph', 'J.', 'Dillon', 'Sr.', 'Sundry Sporting Goods', 'adventure-works\jos‚1', 'rudolph0@adventure-works.com', '722-555-0169'),
    (174, 'Mr.', 'Michael', 'L.', 'Bohling', '', 'Toy Manufacturing Inc', 'adventure-works\garrett1', 'michael12@adventure-works.com', '838-555-0147'),
    (178, 'Mr.', 'Dick', '', 'Dievendorff', '', 'Rampart Amusement Company', 'adventure-works\jae0', 'dick1@adventure-works.com', '1 (11) 500 555-0193'),
    (180, 'Ms.', 'Nicky', 'E.', 'Chesnut', '', 'Full-Service Bike Store', 'adventure-works\michael9', 'nicky0@adventure-works.com', '264-555-0164'),
    (181, 'Mr.', 'Michael', 'J.', 'Lee', '', 'Family Entertainment Center', 'adventure-works\pamela0', 'michael18@adventure-works.com', '396-555-0139'),
    (182, 'Mr.', 'Stanley', 'A.', 'Alan', 'Jr.', 'Another Bicycle Company', 'adventure-works\david8', 'stanley0@adventure-works.com', '156-555-0126'),
    (183, 'Mr.', 'Yao-Qiang', '', 'Cheng', '', 'This Area Sporting Goods', 'adventure-works\jillian0', 'yao-qiang0@adventure-works.com', '344-555-0181'),
    (184, 'Ms.', 'Marjorie', 'M.', 'Lee', '', 'Go-cart and Bike Specialists', 'adventure-works\jillian0', 'marjorie0@adventure-works.com', '306-555-0166'),
    (185, 'Mr.', 'Sandeep', '', 'Kaliyath', '', 'Weekend Bike Tours', 'adventure-works\shu0', 'sandeep1@adventure-works.com', '495-555-0113'),
    (186, 'Mr.', 'Pei', '', 'Chow', '', 'Thrilling Bike Tours', 'adventure-works\linda3', 'pei0@adventure-works.com', '789-555-0184'),
    (187, 'Mr.', 'Frank', '', 'Campbell', '', 'Trailblazing Sports', 'adventure-works\shu0', 'frank4@adventure-works.com', '491-555-0132'),
    (190, 'Mr.', 'Mark', '', 'Lee', '', 'Racing Partners', 'adventure-works\jos‚1', 'mark5@adventure-works.com', '371-555-0112'),
    (191, 'Ms.', 'Sandra', 'T.', 'Kitt', '', 'Non-Slip Pedal Company', 'adventure-works\jos‚1', 'sandra2@adventure-works.com', '303-555-0117'),
    (192, 'Mr.', 'Hao', '', 'Chen', '', 'Nuts and Bolts Mfg.', 'adventure-works\garrett1', 'hao1@adventure-works.com', '117-555-0173'),
    (196, 'Ms.', 'Jolie', '', 'Lenehan', '', 'Exhibition Showroom', 'adventure-works\jae0', 'jolie0@adventure-works.com', '1 (11) 500 555-0126'),
    (197, 'Ms.', 'Diane', 'F.', 'Krane', '', 'Fabrikam Inc., West', 'adventure-works\michael9', 'diane4@adventure-works.com', '224-555-0126'),
    (198, 'Mr.', 'Payton', 'P.', 'Benson', '', 'Field Trip Inc', 'adventure-works\michael9', 'payton0@adventure-works.com', '528-555-0183'),
    (199, 'Mr.', 'Roger', '', 'Lengel', '', 'Authorized Bike Sales and Rental', 'adventure-works\pamela0', 'roger1@adventure-works.com', '947-555-0143'),
    (200, 'Ms.', 'Peggy', 'J.', 'Justice', '', 'Basic Bike Company', 'adventure-works\david8', 'peggy0@adventure-works.com', '170-555-0189'),
    (201, 'Ms.', 'Edna', 'J.', 'Benson', '', 'Unsurpassed Bikes', 'adventure-works\jillian0', 'edna0@adventure-works.com', '789-555-0189'),
    (202, '', 'A.', 'Francesca', 'Leonetti', '', 'Two-Seater Bikes', 'adventure-works\jillian0', 'a0@adventure-works.com', '645-555-0193'),
    (203, 'Ms.', 'Jean', '', 'Jordan', '', 'Separate Parts Corporation', 'adventure-works\shu0', 'jean3@adventure-works.com', '207-555-0129'),
    (204, 'Mr.', 'Ido', '', 'Ben-Sachar', '', 'Traction Tire Company', 'adventure-works\linda3', 'ido0@adventure-works.com', '973-555-0112'),
    (205, 'Mr.', 'Frank', '', 'Martnez', '', 'Rally Master Company Inc', 'adventure-works\shu0', 'frank5@adventure-works.com', '171-555-0147'),
    (208, 'Mr.', 'Steve', '', 'Masters', '', 'Professional Cyclists', 'adventure-works\jos‚1', 'steve2@adventure-works.com', '154-555-0115'),
    (209, 'Mr.', 'Robert', 'E.', 'Jones', '', 'Purple Bicycle Company', 'adventure-works\jos‚1', 'robert6@adventure-works.com', '595-555-0131'),
    (210, 'Mr.', 'Josh', '', 'Barnhill', '', 'Gasless Cycle Shop', 'adventure-works\garrett1', 'josh0@adventure-works.com', '584-555-0192');
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。确认“消息”窗格显示“(65 row(s) affected)”。

查询联合数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the 1 federation member
    USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
    GO
    -- Query customer table for high/low Federated Keys
    SELECT MIN(CustomerID) [CustomerID Low], MAX(CustomerID) [CustomerID High] FROM Customer
    select count(*) from Customer
    SELECT * FROM Customer order by customerid
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”

CustomerID 的范围是 56 到 210。在 Customer 表中共有 65 条记录。

联合提供在线重新分区操作。使用 SPLIT 操作,你可以跨多个联合成员对一个联合成员进行分区。在执行该 SPLIT 操作时可以不让数据库停止运行。若要拆分某一联合成员,你必须首先连接到该联合成员,然后使用 ALTER FEDERATION 命令。你必须指定要对联合成员进行拆分的位置。在下面的示例中,使用 cid=100。

拆分联合成员

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    --Perform federations SPLIT operation
    USE FEDERATION ROOT WITH RESET
    GO
    ALTER FEDERATION CustomerFederation SPLIT AT (cid=100)
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。并且确保“消息”窗格显示“命令已成功完成”

查看联合根元数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the federation root database
    USE FEDERATION ROOT WITH RESET
    GO
    SELECT * FROM sys.federation_member_distributions ORDER BY federation_id, range_low;
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。你将在 federation_member_distributions 表中看到 2 条记录,分别针对各联合成员。

查看联合成员元数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the first federation member
    USE FEDERATION CustomerFederation(cid=0) WITH RESET, FILTERING=OFF
    GO
    SELECT db_name() [db_name]
    SELECT * FROM sys.federation_member_distributions
    -- Query customer table for high/low Federated Keys
    SELECT MIN(CustomerID) [CustomerID Low], MAX(CustomerID) [CustomerID High] FROM Customer
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。该数据库名称与执行 SPLIT 操作前的数据库名称不同。如果你使用了 cid=0,则 CustomerID Low 为 56,CustomerID High 为 99。

查看其他联合成员元数据

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 复制以下语句并将其粘贴到查询编辑器中:

    -- Route connection to the second federation member
    USE FEDERATION CustomerFederation(cid=100) WITH RESET, FILTERING=OFF
    GO
    SELECT db_name() [db_name]
    SELECT * FROM sys.federation_member_distributions
    -- Query customer table for high/low Federated Keys
    SELECT MIN(CustomerID) [CustomerID Low], MAX(CustomerID) [CustomerID High] FROM Customer
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”。确保“消息”窗格显示“查询已成功完成”。CustomerID Low 为 100,CustomerID High 为 210。

若要删除某一联合及其关联数据库,可使用 DROP FEDERATION 语句。

删除联合

  1. 清除查询编辑器中的所有文本。

  2. 确认“可用数据库”显示该联合根数据库。

  3. 在查询编辑器中,复制并粘贴以下 T-SQL 语句:

    USE FEDERATION ROOT WITH RESET
    GO
    DROP FEDERATION CustomerFederation
    GO
    
    
  4. 从 SQL 编辑器命令栏中,单击“执行”

  5. 在对象资源管理器中,右键单击“联合”,然后单击“刷新”。你将看到这些联合成员已删除。

另请参阅

显示:
© 2014 Microsoft