zoukankan      html  css  js  c++  java
  • 数据库文件组小记

    1) 如何将一个数据表从A 文件组移动到 B文件组中

     聚集索引里存放的数据和表的数据必须在同一个文件组中,而且它们的顺序也是一致的,因为聚集索引的叶子节点实际上就是存放的表的数据,不象非聚集索引,叶子节点只是存放了一个指向表数据或者聚集索引的指针而已,真正的数据还是存放在表或聚集索引中。这样我们只要把聚集索引创建在新的文件组上,那么表的数据也就跟着转移到这个新的文件组上了。这里要注意的一点就是聚集索引和主键是不是建在相同的字段上的,如果相同,处理主键就行了,如果不同,则需处理聚集索引。

    --要点:只需将聚集索引建立在需要移动的数据组中,数据页面也会随之移动到对应的文件组中
    
    --创建数据表
     CREATE TABLE tb(id INT ,cname NVARCHAR(4000)) ON [FG_A] 
     GO
     --INSERT DATA
     INSERT INTO [dbo].[tb]
     SELECT 1,'aaaaaaa'
     
    --创建聚集索引(必须是聚集索引)
    CREATE CLUSTERED INDEX PK_ID ON [dbo].[tb]([id]) WITH(ONLINE=ON) ON [FG_B]
    GO
    
    --收缩FG_A
    DBCC SHRINKFILE(FG_A,1)

    2) 修改数据文件名称

    --更改文件组名称
    alter database Test
    modify file(name='Test1',newname='test2')

    3) 当同一个文件组有两个或多个文件时,如何删除某个文件

    --若文件组FG_A中有两个次要文件Test1,Test0.
    --现Test1中已有数据,如何删除Test1文件,同时Test1中的数据不能丢失
    --1)将Test1中的数据转移,系统会自动将数据移动到Test0的文件中
    DBCC SHRINKFILE(Test1,EMPTYFILE) 
    --2)移除Test1文件
    ALTER DATABASE Test REMOVE file Test1
  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/martintuan/p/3720281.html
Copyright © 2011-2022 走看看