sqlserver2008
我创建一个表
create database db_test
on (
name=db_test_DATA,
filename='c:\db_test.mdf'
),
filegroup FG_READ_WRITE(
name=db_test_RW,
filename='c:\db_test_RW.ndf'
),
filegroup FG_READ_ONLY(
name=db_test_R,
filename='c:\db_test_R.ndf'
)
log on(
name=db_test_LOG,
filename='c:\db_test.ldf'
)之后create table db_test.dbo.tb_R(id int) on FG_READ_ONLY;
insert into tb_R values(2)alter database db_test modify filegroup FG_READ_ONLY read_only;现在这个只读表应该要删除, 但是
alter database db_test  remove filegroup db_test_R
Msg 5014, Level 16, State 1, Line 2
数据库 'db_test' 中不存在 文件组'db_test_R'。这个只读表以及文件组该如何才能删除

解决方案 »

  1.   

    'db_test_R'  这个不是文件组,只是逻辑文件要删表,必须先设置文件组可读写alter database db_test modify filegroup FG_READ_ONLY READ_WRITE; drop table db_test.dbo.tb_R 
      

  2.   

    去不掉提示 alter 对于 filegroup  FG_READ_ONLY 失败(mirosoft.sqlserver.smo)an exception occurred while executing a transact-sql statement or batch.
    (mircrosoft.sqlserver.connectionInfo)在其他用户正是使用'db_test' 时候, 无法更改数据库状态(microsoft sql server 错误 5070)这个方法早用过了, 有人先删除表....但是现在删除表提示不能有这个操作
      

  3.   

    感谢楼上 本主题说明了如何使用 SQL Server Management Studio 中的对象资源管理器将用户定义数据库设置为单用户模式。单用户模式指定一次只有一个用户可访问数据库,该模式通常用于维护操作。
    注意事项 注意如果其他用户在您将数据库设置为单用户模式时连接到了数据库,则他们与数据库的连接将被关闭,且不发出警告。即使设置此选项的用户已注销,数据库仍保持单用户模式。这时,其他用户(但只能是一个)可以连接到数据库。
    将数据库设置为单用户模式   1.      在对象资源管理器中,连接到 SQL Server 数据库引擎实例,然后展开该实例。
       2.      右键单击要更改的数据库,再单击“属性”。
       3.      在“数据库属性”对话框中,单击“选项”页。
       4.      在“限制访问”选项中,选择“单用户”。
       5.      如果其他用户连接到数据库,将出现“打开的连接”消息。若要更改属性并关闭所有其他连接,请单击“是”。还可以使用此过程将数据库设置为“多用户”访问或“限制”访问。有关“限制访问”选项的详细信息,
      

  4.   

    sqlserver中文件组Filegroup的使用
      发表时间:2010-10-22 9:35:08   作者:wizen_花   来源:飞讯网   浏览:423次数据库的操作:
    1. 对数据文件的操作(添加,删除,修改文件的初始大小,最大大小,步长)
    2. 数据库文件的收缩
    3. 数据库的只读/读写   read_only只读   read_write可读写   read_only表示只读  read_write表示可读可写
    4. 数据库的限制访问(单用户,多用户,限制用户模式)
    5.数据库脱机/联机    offline  脱机 alter database love set offline      online 联机    alter database love set online
    6. 数据库附加/分离。  sp_attach_db  附加  SP_detach_db 分离  附加 sp_attach_db 分离 sp_detach_db   offline 脱机 online 联机文件组:
    文件组:对数据文件的管理单元,即文件的集合、文件组的优势。
    1. 对文件的管理,分类管理(将所有存放财务的数据放在一个文件组中,也可以所有关于人事的数据放在一个文件组).
    2. 文件组增加数据读写的速度。特点:
        1. 一个数据库至少一个文件组,当数据库创建成功后,将自动创建文件组(primary文件组).
        2. 文件组只能存放数据文件(mdf,ndf),ldf文件不能放入到文件组中.
        3. 一旦文件加入到文件组,不能切换文件组了。
    文件组的类型
      1. 主文件组--无法删除。
             1. primary 文件组
             2. 系统创建的.
             3.  存放两种类型的文件
                    1. 数据库mdf文件.
                    2. 存放没有单独指定文件组的文件,在添加ndf文件时,如果没有指定文件组,文件默认存放的文件组.---数据库中文件必须放在文件组中。
    因为:数据库---文件组--文件。
      2. 用户自定义文件组
            1. 用户创建的.
            2. 存放:当添加ndf文件时,明确指定文件组的文件.
             3. 可以删除。文件组是一个或多个文件的集合,是构成分配和数据管理的单个逻辑单元(是sqlserver中对多个物理数据文件的管理单位)Sql服务器包括主文件组(系统自动创建的)和其他用户自定义的文件组
    主文件组包括系统表的主数据文件(primary),他包括所有数据库中的系统表,以及所有没有在用户自定义的文件组中所指定的对象和数据, 一个数据库只有一个主文件组
    用户自定义文件组包括出于分配和管理目的而分组的数据文件(ndf)
    事务日志文件不能存放在任意一个文件组中重点
           文件组允许对文件进行分组,以便于管理和数据的分配/放置。例如,可以分别在三个硬盘驱动器上创建三个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,因而性能得以提高。
              如果文件组是由在不同物理磁盘中展开的多个文件组成,而且每个磁盘都有自己的磁盘控制器,则对表中数据的查询将在这些磁盘中展开,从而提高查询性能
    问题:
    1. 如何查看数据库中所有的文件组。
       语法:sp_helpfilegroup
        步骤:
                   use 数据库
                   sp_helpfilegroup
    2. 如何找到文件组和文件的对应情况.
            sp_helpdb love创建文件组。
    语法:
       alter database 数据库名 add filegroup 文件组名
    步骤:
        use 数据库名
        alter database  数据库名  add filegroup 文件组名
    范例:
    use love
    alter database love add filegroup 财务部将文件放入到文件组中
    语法:
      alter database 数据库名 add file(name='xxx',filename='文件的物理路径',
    size='初始大小',maxsize="最大大小',filegrowth=步长)   --添加文件,并且将文件放入到默认文件组(primary文件组)
    alter database love
    add file
    (name='love_n1',filename='c:\love_n1.ndf')
     alter database 数据库名 add file(name='xxx',filename='文件的物理路径',
    size='初始大小',maxsize="最大大小',filegrowth=步长)  to filegroup 文件组名alter database love
    add file
    (name='love_n2',filename='c:\love_n2.ndf')
    to filegroup 财务部数据-->primary-->love文件和love_n1
    数据-->财务部-->love_n2问题:数据如何放入到文件组中。
    数据库中利用表保存和处理数据
    数据--表-->文件组--数据文件指定表和文件组的关系
    语法:
       create table 表名(xxxxxx) on 文件组
    步骤:
       use 数据库
       create table语法 on  表名
    范例:
    create table renshi(id int not null,
    name varchar(50) not null, salary money not null)
    on 财务部
    1。创建数据库(nnn),如果存在,先删除,再创建. 
    2.   向数据库nnn添加文件组(f1)
    3.  向数据库nnn添加文件,并且放在f1中。
    4. 查询文件组f1中的文件情况.
    5. 创建表,并制定放置f1中。
    6. 查询表和文件组的关系。
    范例:
    create database nnn
    use nnn
    alter database nnn add filegroup f1
    alter database nnn add file(name='kk',filename='d:\kk.ndf') to filegroup f1
    sp_helpfilegroup f1create table renshi(id int not null,
    name varchar(50) not null, salary money not null) on f1
    sp_help renshi
    删除文件组。
    语法:
      alter database 数据库名  remove filegroup 文件组名
    注意:
      1. 删除所有放置在文件组中的表
      2. 删除文件组中文件
           sp_helpdb 数据库名
      3. 删除文件组
    范例:
    drop table renshi
    alter database love remove file love_n2
    alter database love remove filegroup 财务部在这里我申明一下 对于文件组来说: 对文件组的使用方法一定要步骤来实施,不然到时候删除回出错的,步骤如下:首先创建一个文件组然后创建一个辅助数据库文件
    ndf 到文件组当中 然后创建一个表放到文件组的里面简写步骤就是: 文件组 ----> 文件(ndf)------表>然后在删除的时候与创建的时候恰好相反 简写步骤是: 表--》文件---》文件组 记住千万不要搞错了哈!!不然删除的时候就会出现很多麻烦的啦!!!问题:返回当前数据库中所有的表和文件组的对应关系。--查帮助文档。创建表时,必须人工指定文件组,否则,默认放在primary文件组
    假设,将所有创建的表都放置用户自定义文件组
    问题:每次创建表时,必须人工指定,否则到primary文件组,如果创建时,忘记设置,则必须删除表,重新创建数据库的默认文件组
    默认文件组:在创建表时,不指定文件组,即表默认属于的文件组,默认情况下,primary文件组为数据库的默认文件组.
    修改数据库的默认文件组:
      语法:
          alter database 数据库名  modify filegroup 文件组名  default
    步骤:
       use 数据库名
       alter database语法:
     
    注意:设置为默认文件组的文件组中必须包含至少一个文件。范例:
    alter database love
    add filegroup 人事部alter database love
    add file
    (name='love_n2',filename='c:\love_n2.ndf')
    to filegroup 人事部use love
    alter database love modify filegroup 人事部 defaultcreate table renshi
    (id int,name varchar(50))sp_help renshi