中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server如何進行表分區刪除

發布時間:2021-10-15 17:21:14 來源:億速云 閱讀:776 作者:小新 欄目:開發技術

這篇文章主要介紹SQL Server如何進行表分區刪除,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、引言

刪除分區又稱為合并分區,簡單地講就是將多個分區的數據進行合并。現以表Sales.SalesOrderHeader作為示例,演示如何進行表分區刪除。

重要的事情說三遍:備份數據庫!備份數據庫!備份數據庫!

二、演示

2.1、數據查詢

2.1.1、 查看分區元數據
SELECT * FROM SYS.PARTITION_FUNCTIONS       --分區函數
SELECT * FROM SYS.PARTITION_RANGE_VALUES    --分區方案

SQL Server如何進行表分區刪除

2.1.2、統計每個分區的數據量
SELECT $PARTITION.SalesOrderHeader_OrderDate(OrderDate) AS NUMBER,COUNT(1) AS COUNT
FROM [Sales].[SalesOrderHeader]
GROUP BY $PARTITION.SalesOrderHeader_OrderDate(OrderDate)

分區表中有數據時,是不能夠刪除分區方案和分區函數的,只能將數據先移到其它表中,再刪除。

2.2、刪除實操

2.2.1、合并原表分區
ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2011-01-01 00:00:00.000')
ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2012-01-01 00:00:00.000')
ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2013-01-01 00:00:00.000')
ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2014-01-01 00:00:00.000')
2.2.2、備份原表所有索引的創建腳本
ALTER TABLE [Sales].[SalesOrderHeader] ADD  CONSTRAINT [PK_SalesOrderHeader_SalesOrderID] PRIMARY KEY NONCLUSTERED 
(
    [SalesOrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
2.2.3、刪除原表所有索引
ALTER TABLE [Sales].[SalesOrderHeader] DROP CONSTRAINT [PK_SalesOrderHeader_SalesOrderID]
2.2.4、創建臨時表
CREATE TABLE [Sales].[SalesOrderHeader_Temp](
    [SalesOrderID] [INT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    [RevisionNumber] [TINYINT] NOT NULL,
    [OrderDate] [DATETIME] NOT NULL,
    [DueDate] [DATETIME] NOT NULL,
    [ShipDate] [DATETIME] NULL,
    [Status] [TINYINT] NOT NULL,
    [OnlineOrderFlag] [dbo].[Flag] NOT NULL,
    [SalesOrderNumber]  AS (ISNULL(N'SO'+CONVERT([NVARCHAR](23),[SalesOrderID]),N'*** ERROR ***')),
    [PurchaseOrderNumber] [dbo].[OrderNumber] NULL,
    [AccountNumber] [dbo].[AccountNumber] NULL,
    [CustomerID] [INT] NOT NULL,
    [SalesPersonID] [INT] NULL,
    [TerritoryID] [INT] NULL,
    [BillToAddressID] [INT] NOT NULL,
    [ShipToAddressID] [INT] NOT NULL,
    [ShipMethodID] [INT] NOT NULL,
    [CreditCardID] [INT] NULL,
    [CreditCardApprovalCode] [VARCHAR](15) NULL,
    [CurrencyRateID] [INT] NULL,
    [SubTotal] [MONEY] NOT NULL,
    [TaxAmt] [MONEY] NOT NULL,
    [Freight] [MONEY] NOT NULL,
    [TotalDue]  AS (ISNULL(([SubTotal]+[TaxAmt])+[Freight],(0))),
    [Comment] [NVARCHAR](128) NULL,
    [rowguid] [UNIQUEIDENTIFIER] ROWGUIDCOL  NOT NULL,
    [ModifiedDate] [DATETIME] NOT NULL
)
2.2.5、更改原表數據空間類型

1)對著原表Sales.SalesOrderHeader點擊"右鍵"->"設計"。

SQL Server如何進行表分區刪除

2)點擊菜單欄"視圖"->"屬性窗口"。

SQL Server如何進行表分區刪除

3)將數據空間類型更改為"文件組",常規數據空間規范默認為"PRIMARY"。

SQL Server如何進行表分區刪除

2.2.6、移動原表分區數據到臨時表
ALTER TABLE [Sales].[SalesOrderHeader] SWITCH PARTITION 1 TO [Sales].[SalesOrderHeader_Temp] PARTITION 1
2.2.7、創建原表所有索引 到臨時表
ALTER TABLE [Sales].[SalesOrderHeader_Temp] ADD  CONSTRAINT [PK_SalesOrderHeader_SalesOrderID] PRIMARY KEY NONCLUSTERED 
(
    [SalesOrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
2.2.8、刪除原表
DROP TABLE Sales.SalesOrderHeader
2.2.9、刪除分區方案和分區函數
DROP PARTITION SCHEME SalesOrderHeader_OrderDate
DROP PARTITION FUNCTION SalesOrderHeader_OrderDate
2.2.10重命名表名
EXEC SP_RENAME '[Sales].[SalesOrderHeader_Temp]','SalesOrderHeader'

以上是“SQL Server如何進行表分區刪除”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

静安区| 大宁县| 泾源县| 社旗县| 上栗县| 铁岭县| 吴桥县| 集安市| 通河县| 安多县| 时尚| 宜都市| 陈巴尔虎旗| 成武县| 恭城| 繁昌县| 尤溪县| 彭州市| 手游| 彝良县| 仁寿县| 庄浪县| 云霄县| 尉犁县| 疏附县| 资源县| 沙洋县| 右玉县| 晴隆县| 横峰县| 土默特右旗| 遵义市| 水富县| 乌什县| 木兰县| 兴义市| 锦州市| 山东省| 平顺县| 高淳县| 安龙县|