有了现存的聚集索引就很容易移动表数据(即聚集索引)到不同的文件组
但没有其他更高效的要领,搞定! 移动堆表 假如你想从堆表移动数据到自界说的文件组,而且指定新加的文件组作为方针!我们先从聚积索引开始(索引名称从sys.index里获得): SELECT * FROM sys.indexes WHERE object_id=OBJECT_ID(TestTable)-- Move the Clustered Index into the newly created file groupCREATE UNIQUE CLUSTERED INDEX PK__TestTabl__3214EC27D9EE93A9 ON TestTable(ID)WITH(DROP_EXISTING = ON)ON CustomFileGroupGO 当你再次执行sp_help,真的不是个完美的办理要领 感激存眷! 原文链接 https://www.sqlpassion.at/archive/2016/09/26/how-to-move-data-between-file-groups-in-sql-server ,另一个要领是在自界说文件组里建设新的堆表, 因此我们要变通下:你在堆表上姑且建设一个聚积索引(会把数据移入自界说文件组),FILENAME = C:Program FilesMicrosoft SQL ServerMSSQL11.SQL2012MSSQLDATACustomFile2.ndf,然后我交涉下如安在堆内外移动数据, REPLICATE(a,FILEGROWTH = 65536KB) TO FILEGROUP CustomFileGroupGO-- Add a new file to the previous created file groupALTER DATABASE MultipleFileGroups ADD FILE(NAME = CustomFile2,并插入近800MB的测试数据到表。
FILENAME = C:Program FilesMicrosoft SQL ServerMSSQL11.SQL2012MSSQLDATACustomFile1.ndf,但你此刻如何从主文件组里移动现有数据到新加的文件组? 这篇文章的目标是向你展示你如安在文件组间移动数据,SomeData1 INT NOT NULL, 5000))SET @i += 1ENDGO 但你在表上执行sp_help的系统存储进程, 0)GO 此刻当你插入另一个800MB的数据。
SIZE = 1048576KB,重定名新的堆表。
FILEGROWTH = 65536KB) TO FILEGROUP CustomFileGroupGO 此刻的问题是现存的你的所有数据还在主文件组,假如你有聚积索引,而且你付诸动作了: -- Add a new file group to the databaseALTER DATABASE MultipleFileGroups ADD FILEGROUP CustomFileGroupGO-- Add a new file to the previous created file groupALTER DATABASE MultipleFileGroups ADD FILE(NAME = CustomFile1,你如何移动它们到新加的文件组?这个问题的谜底很是简朴:重建这些索引(聚积和非聚积索引)即可,删除本来的堆表,主要的问题是SQL Server不提供在文件组间移动堆表数据的要领,让我们开始吧! 移动聚积和非聚积索引 一般来说在你的表上凡是应该有一个聚积索引,移动数据到新的堆表,你只需要在自界说文件组重建索引即可,你会看到SQL Server已经讲聚积索引完全移入差异的文件组, 1) PRIMARY KEY NOT NULL,SomeData2 CHAR(5000))GO-- Create a supporting Non-Clustered IndexCREATE NONCLUSTERED INDEX idx_SomeData1 ON TestTable(SomeData1)GO-- Insert around 800 MB of dataDECLARE @i INT = 0WHILE (@i 100000)BEGININSERT INTO TestTable (SomeData1,还不是一个完美的办理要领 小结 在文件组间移动数据可以简朴也可以巨大取决于有没有聚积索引存在,你最终可以验证新分派在新加的文件组里产生。
有多个文件的自界说文件组会是个更好的主意, -- Create a new Clustered Index on the Heap table that moves the data into the custom file groupCREATE UNIQUE CLUSTERED INDEX idx_ci ON TestTable(ID)ON CustomFileGroupGO-- Drop the previous created Clustered Index again ;-)DROP INDEX idx_ci ON TestTableGO 我知道这样有点奇怪,主文件组照旧很小,然后你删除聚积索引规复为堆表, 此刻我们继承处理惩罚非聚积索引: -- Create a supporting Non-Clustered IndexCREATE NONCLUSTERED INDEX idx_SomeData1 ON TestTable(SomeData1)WITH(DROP_EXISTING = ON)ON CustomFileGroupGO 最后,这需要一点能力,我们可以收缩主文件组的数据文件来接纳已分派的空间: -- Shrink the MDF file in the PRIMARY file groupDBCC SHRINKFILE (TestDatabase ,你要姑且增加聚积索引(它会移动表数据到此外文件组),SIZE = 1048576KB,厥后围观了SQL Server里的文件和文件组后, 泛泛我不知道被问了屡次这样的问题:SQL Server里在文件组间如何移动数据?你意识到这个问题:你只有一个主文件组的默认设置。
你知道, CREATE TABLE TestTable(ID INT IDENTITY(1,首先我交涉下聚积和非聚积索引。
sp_help TestTable 假设此刻我已经让你相信一个有多个文件的自界说文件组是个好主意,下列代码我为表建设了一个简朴的聚积和非聚积索引, SomeData2)VALUES (@i,然后删除聚积索引,假如你要处理惩罚堆表。
有了现存的聚积索引就很容易移动表数据(即聚积索引)到差异的文件组。
你可以看到在主文件组里看到2个索引(聚积索引和非聚积苏音),。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/mssql/12842.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
SQL基本教程之行转列Pivo
时间:2021-01-20
-
region from hr.Employees union
时间:2021-01-20
-
有时候需要调整用户权限
时间:2021-01-19
-
(但使用 ORDER BY 子句并不
时间:2021-01-19
-
RAND()*10000)insert into Detail
时间:2021-01-19
-
OR 运算符:在两侧的查询
时间:2021-01-19
-
放假之前老大跟我提起了
时间:2021-01-19
-
数据库的运维计策剧本篇
时间:2021-01-19
热门文章
-
4.与聚合函数和 GROUP BY 子句有关的常见错
时间:2021-01-19
-
SQL Server安全(11/11):审核(Auditing)
时间:2021-01-09
-
sqlserver中查询横表变竖表的sql语句简析
时间:2020-12-08
-
SQL Server简单模式下误删除堆表记录恢复方
时间:2020-12-12
-
关于SQL Server查询语句的使用
时间:2020-12-13
-
MSSQL教程_mssql数据库教程_MSSQL基础教程_第
时间:2020-12-13
-
jdbc连接sql server数据库问题分析
时间:2020-12-10
-
详解SQL游标的用法
时间:2020-12-27
-
sql server 关于设置null的一些建议
时间:2020-12-28
-
mssql关于一个表格结构的另外一种显示(表
时间:2020-12-11
