如何创建及分配文件组?示例数据:
数据库名称:db_1
原始文件组:PRIMARY
表名称:t_1 到t_100共100个表
文件路径:d:\database\要求:
增加两个文件组
filegroup1 存放表t_34 到t_67的数据  文件路径:e:\database\
filegroup2 存放表t_68 到t_100的数据 文件路径:f:\database\
原文件组:PRIMARY只保存t_1到t_33的数据!另外,拆分文件组后,用备份出来的数据库进行还原,
是不是也一样要提供相关文件组所定义的磁盘分区
如上面定义了f盘,如实际上没有f盘的话,恢复是否失败?
有没有办法,在恢复数据库时,将多个文件组还原到一个文件组中?

解决方案 »

  1.   

    use master
    goalter database db_1
    add filegroup filegroup1
    add filegroup filegroup2
    goalter database db_1
    add file
    (
      name = add_file1,
      filename = 'e:\database\db1_01.ndf'
    )
    to filegroup filegroup1
    goalter database db_1
    add file
    (
      name = add_file2,
      filename = 'f:\database\db1_02.ndf'
    )
    to filegroup filegroup2
    gouse tdb1
    go
    sp_msforeachtable 
    @whereand = "and name between 't_34' and 't_67' ",
    @command1 = "alter table ? add constraint cc primary key (.....) on filegroup1" 
    go
    sp_msforeachtable 
    @whereand = "and name between 't_68' and 't_100' ",
    @command1 = "alter table ? add constraint cc primary key (.....) on filegroup2" 
    go
      

  2.   

    1 cc这个参数要不停的变才行 
    2 我看了下BOL 必须指定PRIMARY KEY或者UNIQUE才让跟ON FILEGROUP命令 郁闷啊
      

  3.   

    如果这样实现比较困难 还不如建三个数据库-》每个里面放33张表-》每个数据库一个FILEGROUP或者放三台服务器每台放一个数据库-》开启MSDTC-》分别创建Distributed Partition View ^_^
      

  4.   

    如果这样实现比较困难 还不如建三个数据库-》每个里面放33张表-》每个数据库一个FILEGROUP或者放三台服务器每台放一个数据库-》开启MSDTC-》分别创建Distributed Partition View ^_^
    我只有一台服务器,但有多个硬盘,因此,想用文件组的方式减少单个磁盘的I/O压力,MSDTC没有用过,不知性能如何?
      

  5.   

    创建文件组的目的就是利用多磁头并发访问分散IO负载 最简单的做法你不用新建额外的文件组 另外添加两个文件(如e:\database\db1_add1.ndf)分别存放33~67和68~100表集。数据写入的时候是依次写入mdf、ndf1、ndf2新建额外的文件组可以将表物理上进行迁移 由于数据不在同一个文件组 数据会先占满第一个mdf文件再填充ndf1、ndf2MSDTC主要就是多服务器间平衡了