


SQL Server中創建數據倉庫已分區表
注意: 您可以復制下面的腳本,這些腳本位于 C:\SQLHOLS\Partitioning\Solution\Partition Processing 文件夾中的 Partition Processing.ssmssln 解決方案中。
1.新建 SQL Server 腳本項目
(1)從開始->所有程序菜單中的 Microsoft SQL Server 2008 程序組中啟動SQL Server Management Studio。
(2)在連接到服務器對話框中,驗證下列設置無誤后單擊連接:
• 服務器類型:數據庫引擎
• 服務器名稱:(local)
• 身份驗證:Windows 身份驗證
(3)在文件菜單上,指向新建,然后單擊項目。
(4)確保選中 SQL Server 腳本,然后輸入下列設置:
• 名稱:Partition Processing
• 位置:C:\SQLHOLs\Partitioning\Starter
• 解決方案名稱:Partition Processing
(5)確保選中創建解決方案的目錄,然后單擊確定。
(6)在解決方案資源管理器中,右鍵單擊連接,然后單擊新建連接。
(7)在連接到服務器對話框中,驗證下列設置無誤后單擊確定:
• 服務器名稱:(local)
• 身份驗證:Windows 身份驗證
2.創建文件組和文件
(1)在解決方案資源管理器中,右鍵單擊在前面步驟中添加的連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Files and Filegroups.sql,然后按 Enter。
(4)鍵入下面的代碼(每個 FILENAME 參數都應單占一行)。
USE [master]ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2001]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2002]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2003]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2004]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2001',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2001.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2001]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2002',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2002.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2002]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2003',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2003.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB) TO FILEGROUP [fg2003]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2004',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2004.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2004]
GO
(5)單擊執行。
3.創建分區函數
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Partition Function.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWCREATE PARTITION FUNCTION pf_OrderDateKey(int)
AS RANGE RIGHT
FOR VALUES(185,550)
GO
(5)單擊執行。
注意:分區函數提供了兩個文件組之間的邊界。在本例中,值是與 1 月 1 日對應的鍵。
4.創建分區方案
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Partition Scheme.sql,然后按 Enter。
(4)鍵入下面的代碼。單擊執行。
USE AdventureWorksDWCREATE PARTITION SCHEME ps_OrderDateKey
AS PARTITION pf_OrderDateKey
TO (fg2001,fg2002,fg2003,fg2004)
GO
注意:雖然分區函數中僅列出了兩個邊界,但卻有四個文件組在分區函數中列出。第四個文件組是作為供將來的文件組拆分使用的下一個文件組提供的。
5.創建已分區表
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Table.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWCREATE TABLE [dbo].[FactInternetSalesPartitioned]
(
[InternetSalesID] [int] IDENTITY(1,1) NOT NULL,
[ProductKey] [int] NOT NULL,
[OrderDateKey] [int] NOT NULL,
[DueDateKey] [int] NOT NULL,
[ShipDateKey] [int] NOT NULL,
[CustomerKey] [int] NOT NULL,
[PromotionKey] [int] NOT NULL,
[CurrencyKey] [int] NOT NULL,
[SalesTerritoryKey] [int] NOT NULL,
[SalesOrderNumber] [nvarchar](20) NOT NULL,
[OrderQuantity] [smallint] NULL,
[UnitPrice] [money] NULL,
CONSTRAINT [PK_ FactInternetSalesPartitioned] PRIMARY KEY CLUSTERED
(
[InternetSalesID],
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey]
)
)
ON ps_OrderDateKey(OrderDateKey)
GO
(5)單擊執行。
6.將數據插入已分區表中
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Load Data.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWINSERT INTO [dbo].[FactInternetSalesPartitioned]
(
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey],
[SalesOrderNumber],
[OrderQuantity],
[UnitPrice]
)
SELECT
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey],
[SalesOrderNumber],
[OrderQuantity],
[UnitPrice]
FROM [dbo].[FactInternetSales]
GO
(5)單擊執行。
7.查看分區數據
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 View Partitioned Data.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWSELECTProductKey,
OrderDateKey,
$PARTITION.pf_OrderDateKey (OrderDateKey) AS PartitionNo
FROM FactInternetSalesPartitioned
GO
SELECT $PARTITION.pf_OrderDateKey (OrderDateKey) AS PartitionNo,
COUNT(*) AS Rows FROM FactInternetSalesPartitioned
GROUP BY $PARTITION.pf_OrderDateKey (OrderDateKey)
ORDER BY PartitionNo
GO
(5)單擊執行。
(6)待查詢完成后,查看結果。
注意:第一個結果集顯示表中每行的產品密鑰和訂單日期密鑰以及存儲各行的相應分區。
第二個結果集顯示各分區中的行數。
(7)保持 SQL Server Management Studio 打開,下一個練習還要使用此程序。
在本練習中,您將創建一個分區數據倉庫事實數據表。非常大的表經常需要跨幾個磁盤卷存儲數據。SQL Server 表無法放置在特定文件中。但是,文件組可以放置在文件中,而表可以分配給文件組。這樣您就可以控制 SQL Server 中非常大的表中的數據的存儲。而且,如果表跨幾個文件組,定義哪些數據放置在哪個文件組中會非常有用。分區函數通過基于特定列中的值沿水平方向拆分表提供 了此功能。
注意: 您可以復制此練習中所用的腳本,這些腳本位于 C:\SQLHOLS\Partitioning\Solution\Partition Processing 文件夾中的 Partition Processing.ssmssln 解決方案中。
1.新建 SQL Server 腳本項目
(1)從開始->所有程序菜單中的 Microsoft SQL Server 2008 程序組中啟動SQL Server Management Studio。
(2)在連接到服務器對話框中,驗證下列設置無誤后單擊連接:
• 服務器類型:數據庫引擎
• 服務器名稱:(local)
• 身份驗證:Windows 身份驗證
(3)在文件菜單上,指向新建,然后單擊項目。
(4)確保選中 SQL Server 腳本,然后輸入下列設置:
• 名稱:Partition Processing
• 位置:C:\SQLHOLs\Partitioning\Starter
• 解決方案名稱:Partition Processing
(5)確保選中創建解決方案的目錄,然后單擊確定。
(6)在解決方案資源管理器中,右鍵單擊連接,然后單擊新建連接。
(7)在連接到服務器對話框中,驗證下列設置無誤后單擊確定:
• 服務器名稱:(local)
• 身份驗證:Windows 身份驗證
2.創建文件組和文件
(1)在解決方案資源管理器中,右鍵單擊在前面步驟中添加的連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Files and Filegroups.sql,然后按 Enter。
(4)鍵入下面的代碼(每個 FILENAME 參數都應單占一行)。
USE [master]ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2001]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2002]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2003]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILEGROUP [fg2004]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2001',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2001.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2001]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2002',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2002.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2002]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2003',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2003.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB) TO FILEGROUP [fg2003]
GO
ALTER DATABASE [AdventureWorksDW] ADD FILE
(NAME = N'AdventureWorksDW_Data2004',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW_Data2004.ndf',
SIZE = 2048KB , FILEGROWTH = 1024KB ) TO FILEGROUP [fg2004]
GO
(5)單擊執行。
3.創建分區函數
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Partition Function.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWCREATE PARTITION FUNCTION pf_OrderDateKey(int)
AS RANGE RIGHT
FOR VALUES(185,550)
GO
(5)單擊執行。
注意:分區函數提供了兩個文件組之間的邊界。在本例中,值是與 1 月 1 日對應的鍵。
4.創建分區方案
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Partition Scheme.sql,然后按 Enter。
(4)鍵入下面的代碼。單擊執行。
USE AdventureWorksDWCREATE PARTITION SCHEME ps_OrderDateKey
AS PARTITION pf_OrderDateKey
TO (fg2001,fg2002,fg2003,fg2004)
GO
注意:雖然分區函數中僅列出了兩個邊界,但卻有四個文件組在分區函數中列出。第四個文件組是作為供將來的文件組拆分使用的下一個文件組提供的。
5.創建已分區表
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Create Table.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWCREATE TABLE [dbo].[FactInternetSalesPartitioned]
(
[InternetSalesID] [int] IDENTITY(1,1) NOT NULL,
[ProductKey] [int] NOT NULL,
[OrderDateKey] [int] NOT NULL,
[DueDateKey] [int] NOT NULL,
[ShipDateKey] [int] NOT NULL,
[CustomerKey] [int] NOT NULL,
[PromotionKey] [int] NOT NULL,
[CurrencyKey] [int] NOT NULL,
[SalesTerritoryKey] [int] NOT NULL,
[SalesOrderNumber] [nvarchar](20) NOT NULL,
[OrderQuantity] [smallint] NULL,
[UnitPrice] [money] NULL,
CONSTRAINT [PK_ FactInternetSalesPartitioned] PRIMARY KEY CLUSTERED
(
[InternetSalesID],
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey]
)
)
ON ps_OrderDateKey(OrderDateKey)
GO
(5)單擊執行。
6.將數據插入已分區表中
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 Load Data.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWINSERT INTO [dbo].[FactInternetSalesPartitioned]
(
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey],
[SalesOrderNumber],
[OrderQuantity],
[UnitPrice]
)
SELECT
[ProductKey],
[OrderDateKey],
[DueDateKey],
[ShipDateKey],
[CustomerKey],
[PromotionKey],
[CurrencyKey],
[SalesTerritoryKey],
[SalesOrderNumber],
[OrderQuantity],
[UnitPrice]
FROM [dbo].[FactInternetSales]
GO
(5)單擊執行。
7.查看分區數據
(1)在解決方案資源管理器中,右鍵單擊該連接,然后單擊新建查詢。
(2)右鍵單擊 SQLQuery1.sql,然后單擊重命名。
(3)鍵入 View Partitioned Data.sql,然后按 Enter。
(4)鍵入下面的代碼。
USE AdventureWorksDWSELECTProductKey,
OrderDateKey,
$PARTITION.pf_OrderDateKey (OrderDateKey) AS PartitionNo
FROM FactInternetSalesPartitioned
GO
SELECT $PARTITION.pf_OrderDateKey (OrderDateKey) AS PartitionNo,
COUNT(*) AS Rows FROM FactInternetSalesPartitioned
GROUP BY $PARTITION.pf_OrderDateKey (OrderDateKey)
ORDER BY PartitionNo
GO
(5)單擊執行。
(6)待查詢完成后,查看結果。
注意:第一個結果集顯示表中每行的產品密鑰和訂單日期密鑰以及存儲各行的相應分區。
第二個結果集顯示各分區中的行數。
(7)保持 SQL Server Management Studio 打開,下一個練習還要使用此程序。
關鍵字:服務器、SQL Server、數據庫
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解