亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

SQLSERVER將數據移到另一個文件組之后清空文件組并刪除文件組

2024-07-21 02:51:13
字體:
來源:轉載
供稿:網友
SQLSERVER將數據移到另一個文件組之后清空文件組并刪除文件組SQLSERVER將數據移到另一個文件組之后清空文件組并刪除文件組

之前寫過一篇文章:SQLSERVER將一個文件組的數據移動到另一個文件組


每個物理文件(數據文件)對應一個文件組的情況(一對一)

如果我把數據移到另一個文件組了,不想要這個已經清空的文件組了,怎麼做?

腳本跟之前那篇文章差不多

 1 USE master 2 GO 3  4  5 IF EXISTS(SELECT * FROM sys.[databases] WHERE [database_id]=DB_ID('Test')) 6 DROP DATABASE [Test] 7  8 --1.創建數據庫 9 CREATE DATABASE [Test]10 GO11 12 USE [Test]13 GO14 15 16 --2.創建文件組17 ALTER DATABASE [Test]18 ADD FILEGROUP [FG_Test_Id_01]19 20 ALTER DATABASE [Test]21 ADD FILEGROUP [FG_Test_Id_02]22 23 24 25 --3.創建文件26 ALTER DATABASE [Test]27 ADD FILE28 (NAME = N'FG_TestUnique_Id_01_data',FILENAME = N'E:/FG_TestUnique_Id_01_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )29 TO FILEGROUP [FG_Test_Id_01];30 31 ALTER DATABASE [Test]32 ADD FILE33 (NAME = N'FG_TestUnique_Id_02_data',FILENAME = N'E:/FG_TestUnique_Id_02_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )34 TO FILEGROUP [FG_Test_Id_02];35 36 37 --4.創建表,這個表的數據存放在[FG_Test_Id_01] 文件組上38 CREATE TABLE aa(id INT ,cname NVARCHAR(4000)) ON [FG_Test_Id_01] 39 GO40 41 42 --5.插入數據43 INSERT INTO [dbo].[aa]44 SELECT 1,REPLICATE('s',3000)45 GO 50046 47 48 --6.查詢數據49 SELECT * FROM [dbo].[aa]50 51 52 --7.創建聚集索引在[FG_Test_Id_02]文件組上53 CREATE CLUSTERED INDEX PK_ID ON [dbo].[aa]([id]) WITH(ONLINE=ON) ON [FG_Test_Id_02]54 GO55 56 57 --8.我們查看一下文件組的邏輯文件名58 EXEC [sys].[sp_helpdb] @dbname = TEST -- sysname59 65 66 --9.移除FG_Test_Id_01文件組67 ALTER DATABASE TEST68 REMOVE FILE FG_TestUnique_Id_01_data

當你移動數據到文件組[FG_Test_Id_02]上時,這時候文件組[FG_Test_Id_01]里面已經沒有數據了使用下面的腳本查看

 1 --數據庫文件、大小和已經使用空間 2 USE [Test]  --要查看的當前數據庫的使用空間,自動增長大小,數據庫文件位置 3 GO 4 set nocount on 5 create table #Data( 6       FileID int NOT NULL, 7       [FileGroupId] int NOT NULL, 8       TotalExtents int NOT NULL, 9       UsedExtents int NOT NULL,10       [FileName] sysname NOT NULL,11       [FilePath] nvarchar(MAX) NOT NULL,12       [FileGroup] varchar(MAX) NULL)13 14 create table #Results(15       db sysname NULL ,16       FileType varchar(4) NOT NULL,17       [FileGroup] sysname not null,18       [FileName] sysname NOT NULL,19       TotalMB numeric(18,2) NOT NULL,20       UsedMB numeric(18,2) NOT NULL,21       PctUsed numeric(18,2) NULL,22       FilePath nvarchar(MAX) NULL,23       FileID int null)24 25 create table #Log(26       db sysname NOT NULL,27       LogSize numeric(18,5) NOT NULL,28       LogUsed numeric(18,5) NOT NULL,29       Status int NOT NULL,30       [FilePath] nvarchar(MAX) NULL)31 32 INSERT #Data (FileID, [FileGroupId], TotalExtents, UsedExtents, [FileName], [FilePath])33 EXEC ('DBCC showfilestats WITH NO_INFOMSGS')34 35 update #Data36 set #Data.FileGroup = sysfilegroups.groupname37 from #Data, sysfilegroups38 where #Data.FileGroupId = sysfilegroups.groupid39 40 INSERT INTO #Results (db, [FileGroup], FileType, [FileName], TotalMB, UsedMB, PctUsed, FilePath, FileID)41 SELECT DB_NAME() db,42             [FileGroup],43             'Data' FileType,44             [FileName],45             TotalExtents * 64./1024. TotalMB,46             UsedExtents *64./1024 UsedMB,47             UsedExtents*100. /TotalExtents  UsedPct,48             [FilePath],49             FileID50 FROM #Data51 order BY --1,252 DB_NAME(), [FileGroup]53 54 insert #Log (db,LogSize,LogUsed,Status)55 exec('dbcc sqlperf(logspace) WITH NO_INFOMSGS ')56 57 insert #Results(db, [FileGroup], FileType, [FileName],  TotalMB,UsedMB, PctUsed, FilePath, FileID)58 select DB_NAME() db,59             'Log' [FileGroup],60             'Log' FileType,61             s.[name] [FileName],62             s.Size/128. as LogSize ,63             FILEPROPERTY(s.name,'spaceused')/8.00 /16.00 As LogUsedSpace,64             ((FILEPROPERTY(s.name,'spaceused')/8.00 /16.00)*100)/(s.Size/128.) UsedPct,65             s.FileName FilePath,66             s.FileID FileID67       from #Log l , master.dbo.sysaltfiles f , dbo.sysfiles s68       where f.dbid = DB_ID()69       and (s.status & 0x40) <> 070       and s.FileID = f.FileID71       and l.db = DB_NAME()72 73 SELECT r.db AS "Database",74 r.FileType AS "File type",75 CASE76      WHEN r.FileGroup = 'Log' Then 'N/A'77      ELSE r.FileGroup78 END "File group",79 r.FileName AS "Logical file name",80 r.TotalMB AS "Total size (MB)",81 r.UsedMB AS "Used (MB)",82 r.PctUsed AS "Used (%)",83 r.FilePath AS "File name",84 r.FileID AS "File ID",85 CASE WHEN s.maxsize = -1 THEN null86     ELSE CONVERT(decimal(18,2), s.maxsize /128.)87 END "Max. size (MB)",88 CONVERT(decimal(18,2), s.growth /128.) "Autogrowth increment (MB)"89 FROM #Results r90 INNER JOIN dbo.sysfiles s91 ON r.FileID = s.FileID92 ORDER BY 1,2,3,4,593 94 DROP TABLE #Data95 DROP TABLE #Results96 DROP TABLE #Log
View Code

使用下面的SQL語句移除文件組[FG_Test_Id_01]就可以了

 5 --9.移除FG_Test_Id_01文件組6 ALTER DATABASE TEST7 REMOVE FILE FG_TestUnique_Id_01_data

此時就只剩下主文件組和[FG_Test_Id_02]文件組了

注意:如果不使用聚集索引來移動文件組[FG_Test_Id_01]上的數據到文件組[FG_Test_Id_02]

1 --4.創建表,這個表的數據存放在[FG_Test_Id_01] 文件組上2 CREATE TABLE aa(id INT ,cname NVARCHAR(4000)) ON [FG_Test_Id_01] 3 GO

直接使用下面SQL語句來收縮文件會報錯

1 -收縮一下FG_Test_Id_01文件組文件2 DBCC SHRINKFILE(FG_TestUnique_Id_01_data,EMPTYFILE)

報錯內容

1 DBCC SHRINKFILE: 無法移動堆頁 3:515。2 消息 2555,級別 16,狀態 1,第 1 行3 無法將文件 "FG_TestUnique_Id_01_data" 的所有內容移到其他位置,以完成清空文件操作。4 語句已終止。5 DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。6 消息 1105,級別 17,狀態 2,第 1 行7 無法為數據庫 'Test' 中的對象 'dbo.aa' 分配空間,因為 'FG_Test_Id_01' 文件組已滿。請刪除不需要的文件、刪除文件組中的對象、將其他文件添加到文件組或為文件組中的現有文件啟用自動增長,以便增加可用磁盤空間。

因為文件組[FG_Test_Id_01]里還有數據,不能清空


兩個物理文件(數據文件)對應一個文件組的情況(一對多)

上面的情況是每個物理文件(數據文件)對應一個文件組的情況

下面這種情況是兩個物理文件(數據文件)對于一個文件組的情況

一對一的情況使用聚集索引里移動數據,而一對一的情況使用DBCC SHRINKFILE

創建數據庫

test1和test2這兩個數據文件歸屬于主文件組primary,而數據文件test1最大大小為6MB初始大小為5MB

test2數據文件最大大小沒有限制

使用下面腳本添加數據到主文件組

 1 --1.創建表,這個表的數據存放在主文件組上 2 CREATE TABLE aa(id INT ,cname NVARCHAR(4000))  3 GO 4  5  6 --2.插入數據 7 INSERT INTO [dbo].[aa] 8 SELECT 1,REPLICATE('s',3000) 9 GO 60010 11 12 --3.查詢數據13 SELECT * FROM [dbo].[aa]14 15 16 17 18 --4.我們查看一下文件組的邏輯文件名19 EXEC [sys].[sp_helpdb] @dbname = TEST120  -- sysname21 SELECT  DB_NAME(database_id) AS DatabaseName ,22         Name AS Logical_Name ,23         Physical_Name ,24         ( size * 8 ) / 1024 SizeMB25 FROM    sys.master_files26 WHERE   DB_NAME(database_id) = 'Test1'

因為第一個數據文件的最大大小限制,所以有一部分數據插入到了test2.ndf

現在修改test1數據文件的最大大小限制為20MB

相關SQL

1 ALTER DATABASE [Test1] MODIFY FILE(name='Test1',SIZE=5MB, filegrowth=1MB, MAXSIZE=20MB)
View Code

執行下面的SQL語句

1 --5.收縮文件2 DBCC SHRINKFILE(test2,EMPTYFILE)3 4 5 --6.移除test2數據文件test2.ndf6 ALTER DATABASE TEST17 REMOVE FILE test2

在執行第五條語句的時候,執行下面腳本


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲午夜视频在线观看| 亚洲热线99精品视频| 国产精品自在线| 成人午夜小视频| 久久影院模特热| 欧美激情精品久久久久久大尺度| 亚洲一区二区三区777| 久久精品欧美视频| 欧美人与性动交| 成人深夜直播免费观看| 国产精品jizz在线观看麻豆| 欧美国产极速在线| 久久视频这里只有精品| 国产精品成av人在线视午夜片| 欧美大片免费观看在线观看网站推荐| 久久免费视频这里只有精品| 日本亚洲精品在线观看| 美女av一区二区| xxx成人少妇69| 日韩网站免费观看| 午夜精品美女自拍福到在线| 国产成人一区二区| 亚洲人成在线一二| 亚洲日韩欧美视频一区| 亚洲成成品网站| 欧美视频不卡中文| 亚洲精品乱码久久久久久按摩观| 成人av番号网| 在线观看精品国产视频| 日本一区二区三区在线播放| 久久久久一本一区二区青青蜜月| 欧美性猛交99久久久久99按摩| 久久久精品视频在线观看| 日韩黄在线观看| 久久免费国产精品1| 成人精品aaaa网站| 主播福利视频一区| 2021国产精品视频| 色综合影院在线| 日韩美女视频免费在线观看| 亚洲欧美精品一区二区| 久久理论片午夜琪琪电影网| 日本精品免费观看| 久操成人在线视频| 美女视频黄免费的亚洲男人天堂| 国产日产欧美a一级在线| 午夜免费久久久久| 亚洲福利影片在线| 国产中文欧美精品| 欧美性少妇18aaaa视频| www.国产一区| 77777亚洲午夜久久多人| 欧美成人精品一区二区三区| 日本人成精品视频在线| 欧美国产视频一区二区| 精品久久久免费| 欧美丝袜美女中出在线| 欧美极品美女电影一区| 国产精品一区二区性色av| 日韩有码在线播放| 日韩中文字幕第一页| 91在线视频精品| 亚洲电影免费观看高清完整版在线观看| 亚洲综合最新在线| 成人av色在线观看| 亚州精品天堂中文字幕| 国产精品亚洲欧美导航| 日韩欧美综合在线视频| 久久久精品一区| 国产精品热视频| 日韩av色在线| 欧美中文字幕视频| 欧美国产乱视频| 亚洲欧美日韩在线一区| 91青草视频久久| 一区二区三区天堂av| 精品成人国产在线观看男人呻吟| 日韩高清a**址| 一色桃子一区二区| 97热精品视频官网| 中文国产成人精品久久一| 国产精品国内视频| 精品久久久久久电影| 中文字幕日韩视频| 欧美成人免费全部观看天天性色| 亚洲国产精品大全| 亚洲成人网久久久| 国产女精品视频网站免费| 成人精品福利视频| 91麻豆桃色免费看| 国产欧美日韩亚洲精品| 国产美女被下药99| 久久久精品网站| 91av视频在线免费观看| 日韩经典中文字幕在线观看| 8x海外华人永久免费日韩内陆视频| 亚洲性线免费观看视频成熟| 国产成人精品电影久久久| 亚洲а∨天堂久久精品喷水| 操日韩av在线电影| 欧美黄色性视频| 国产精品电影观看| 久久天堂电影网| 91欧美视频网站| 97精品国产97久久久久久免费| 免费97视频在线精品国自产拍| 亚洲淫片在线视频| 色琪琪综合男人的天堂aⅴ视频| 热99精品里视频精品| 久久久国产精彩视频美女艺术照福利| 亚洲一区二区三区成人在线视频精品| 亚洲天堂网在线观看| 亚洲国产成人精品久久久国产成人一区| 国产va免费精品高清在线| 欧美www在线| 8090成年在线看片午夜| 91香蕉亚洲精品| 日韩精品免费在线视频| 日韩av中文字幕在线播放| 欧美日韩亚洲系列| 久久久久久噜噜噜久久久精品| 亚洲国产又黄又爽女人高潮的| 国产精品九九九| 日韩精品免费在线观看| 中文字幕精品av| 成人性生交大片免费看视频直播| 国产成人自拍视频在线观看| 日韩亚洲综合在线| 久久福利视频网| 欧美日韩国产中文字幕| 欧美性少妇18aaaa视频| 一区二区三区亚洲| 57pao国产成人免费| 欧美老女人www| 日韩电影大全免费观看2023年上| 久久久久亚洲精品成人网小说| 亚洲欧美日韩天堂一区二区| 国产精品va在线播放我和闺蜜| 亚洲成人激情图| 亚洲国产精品久久久| 精品久久久一区二区| 韩国福利视频一区| 亚洲无亚洲人成网站77777| 欧美激情久久久| 国产欧美日韩中文字幕在线| 国产视频精品免费播放| 97精品国产97久久久久久春色| 日韩精品极品视频免费观看| 欧美一区二区三区图| 亚洲国产日韩欧美在线图片| 欧美激情啊啊啊| 日韩免费电影在线观看| 欧美激情va永久在线播放| 九九热r在线视频精品| 一个人看的www欧美| 精品国产区一区二区三区在线观看| 91色p视频在线| 亚洲国产天堂久久综合网| 欧美午夜女人视频在线| 久久夜色精品亚洲噜噜国产mv| 国产精品久久久久久久久男| 中文字幕欧美精品日韩中文字幕| 亚洲视频视频在线| 国产成人综合亚洲|