Gow*_*thy -4 sql-server partitioning sql-server-2016
我有几个关于分区的问题。我打算将现有的分区方案/函数放入table1
,然后将新的分区方案/函数指向table1
. 我知道如何继续这个过程,但在此之前,我想对以下问题提出一些建议/答案:
如果我删除旧的/现有的分区方案/功能以及表中的数据,旧partition.ndf
文件中的数据会发生什么?它们会被删除或修改吗?
如果我删除旧的/现有的分区方案/功能,表中有数据,表中的数据会发生什么?会不会有记录丢失?
Eri*_*ing 29
您不能删除正在使用的分区方案或函数。
USE tempdb
CREATE PARTITION FUNCTION yourmom ( INT )
AS RANGE LEFT FOR VALUES ( 10, 20, 30, 40, 50 );
CREATE PARTITION SCHEME yourdad
AS PARTITION yourmom
ALL TO ([PRIMARY]);
CREATE TABLE dbo.yourauntdebbie
(
id INT,
whatever VARCHAR(50)
) ON yourdad (id);
Run Code Online (Sandbox Code Playgroud)
甚至没有添加任何数据。
DROP PARTITION FUNCTION yourmom;
DROP PARTITION SCHEME yourdad;
Run Code Online (Sandbox Code Playgroud)
第一个错误:
消息 7706,级别 16,状态 1,第 17 行 一个或多个分区方案正在使用分区函数“yourmom”。
第二个错误:
消息 7717,级别 16,状态 1,第 19 行 分区方案“yourdad”当前正用于对一个或多个表进行分区。
让我们创建一个索引并添加一些数据,这样您就不会认为我疯了。
CREATE CLUSTERED INDEX ix_whatever ON dbo.yourauntdebbie (id) ON yourdad (id)
INSERT dbo.yourauntdebbie WITH (TABLOCK) (id, whatever )
SELECT TOP 1000 n, REPLICATE('A', n % 50)
FROM (SELECT ROW_NUMBER() OVER (ORDER BY @@ROWCOUNT) AS n
FROM sys.messages AS m) AS x
Run Code Online (Sandbox Code Playgroud)
现在,让我们从分区方案中重建聚簇索引。
CREATE CLUSTERED INDEX ix_whatever ON dbo.yourauntdebbie (id) WITH (DROP_EXISTING = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我们可以放弃这个计划;
DROP PARTITION SCHEME yourdad;
Run Code Online (Sandbox Code Playgroud)
删除函数:
DROP PARTITION FUNCTION yourmom;
Run Code Online (Sandbox Code Playgroud)
仍然选择 1000 行:
SELECT *
FROM dbo.yourauntdebbie AS y
Run Code Online (Sandbox Code Playgroud)
然后收拾桌子。
DROP TABLE dbo.yourauntdebbie
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5754 次 |
最近记录: |