好好研习一下这个命令吧ALTER DATABASE
在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。语法
ALTER DATABASE database 
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ] 
| ADD LOG FILE < filespec > [ ,...n ] 
| REMOVE FILE logical_file_name 
| ADD FILEGROUP filegroup_name 
| REMOVE FILEGROUP filegroup_name 
| MODIFY FILE < filespec > 
| MODIFY NAME = new_dbname 
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ] 
| COLLATE < collation_name > 
}< filespec > ::=( NAME = logical_file_name
    [ , NEWNAME = new_logical_name ]
    [ , FILENAME = 'os_file_name' ]
    [ , SIZE = size ]
    [ , MAXSIZE = { max_size | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment ] ) < optionspec > ::=    <state_option>
    | < cursor_option >
    | < auto_option >
    | < sql_option >
    | < recovery_option >    < state_option > ::=
        { SINGLE_USER | RESTRICTED_USER | MULTI_USER }
        | { OFFLINE | ONLINE }
        | { READ_ONLY | READ_WRITE } 
    < termination > ::=
        ROLLBACK AFTER integer [ SECONDS ]
        | ROLLBACK IMMEDIATE
        | NO_WAIT    < cursor_option > ::=
        CURSOR_CLOSE_ON_COMMIT { ON | OFF }
        | CURSOR_DEFAULT { LOCAL | GLOBAL }     < auto_option > ::=
        AUTO_CLOSE { ON | OFF }
        | AUTO_CREATE_STATISTICS { ON | OFF }
        | AUTO_SHRINK { ON | OFF }
        | AUTO_UPDATE_STATISTICS { ON | OFF }     < sql_option > ::=
        ANSI_NULL_DEFAULT { ON | OFF }
        | ANSI_NULLS { ON | OFF }
        | ANSI_PADDING { ON | OFF }
        | ANSI_WARNINGS { ON | OFF }
        | ARITHABORT { ON | OFF }
        | CONCAT_NULL_YIELDS_NULL { ON | OFF }
        | NUMERIC_ROUNDABORT { ON | OFF }
        | QUOTED_IDENTIFIER { ON | OFF }
        | RECURSIVE_TRIGGERS { ON | OFF }    < recovery_option > ::=
        RECOVERY { FULL | BULK_LOGGED | SIMPLE }
        | TORN_PAGE_DETECTION { ON | OFF }参数
database是要更改的数据库的名称。ADD FILE指定要添加文件。TO FILEGROUP指定要将指定文件添加到的文件组。filegroup_name是要添加指定文件的文件组名称。ADD LOG FILE指定要将日志文件添加到指定的数据库。REMOVE FILE从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。ADD FILEGROUP指定要添加文件组。filegroup_name是要添加或除去的文件组名称。REMOVE FILEGROUP从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。MODIFY FILE指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH 和 MAXSIZE。一次只能更改这些属性中的一种。必须在 <filespec> 中指定 NAME,以标识要更改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。只能为 tempdb 数据库中的文件指定 FILENAME,而且新名称只有在 Microsoft SQL Server 重新启动后才能生效。若要更改数据文件或日志文件的逻辑名称,应在 NAME 选项中指定要改名的逻辑文件名称,并在 NEWNAME 选项中指定文件的新逻辑名称。 示例如下:MODIFY FILE (NAME = logical_file_name, NEWNAME = new_logical_name...)。可同时运行几个 ALTER DATABASE database MODIFY FILE 语句以实现多个修改文件操作时性能最优。MODIFY NAME = new_dbname重命名数据库。MODIFY FILEGROUP filegroup_name { filegroup_property | NAME = new_filegroup_name }指定要修改的文件组和所需的改动。 如果指定 filegroup_name 和 NAME = new_filegroup_name,则将此文件组的名称改为 new_filegroup_name。如果指定 filegroup_name 和 filegroup_property,则表示给定文件组属性将应用于此文件组。filegroup_property 的值有: READONLY 
指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。只有具有排它数据库访问权限的用户才能将文件组标记为只读。READWRITE 
逆转 READONLY 属性。允许更新文件组中的对象。只有具有排它数据库访问权限的用户才能将文件组标记为读/写。DEFAULT 
将文件组指定为默认数据库文件组。只能有一个数据库文件组是默认的。CREATE DATABASE 语句将主文件组设置为初始的默认文件组。如果在 CREATE TABLE、ALTER TABLE 或者 CREATE INDEX 语句中没有指定文件组,则新表及索引将在默认文件组—中创建。 
WITH <termination>指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。只能指定一条 termination 子句,而且该子句应跟在 SET 子句后面。 ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE 
设定是在指定秒数之后回滚还是立即回滚。如果省略了 termination 子句,那么将允许事务自主提交或回滚。NO_WAIT 
指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。 
COLLATE < collation_name >指定数据库的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。<filespec>控制文件属性。 NAME 
指定文件的逻辑名称。logical_file_name 
是在 Microsoft SQL Server 中引用文件时所用的名称。该名称在数据库中必须唯一,并应遵循标识符规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关更多信息,请参见使用标识符。 FILENAME 
指定操作系统中的文件名。当和 MODIFY FILE一起使用时,只能对 tempdb 数据库中的文件指定 FILENAME。新 tempdb 文件名只有在 SQL Server 停止并重新启动后才能生效。'os_file_name' 
由操作系统使用的文件的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。数据文件和日志文件不应置于压缩的文件系统中。 
如果文件位于原始分区上,那么 os_file_name 必须仅指定该原始分区的驱动器字母。每个原始分区上只能存放一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。 
SIZE 
指定文件大小。size 
是文件的大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值是 512 KB,如果 size 未指定,默认值是 1 MB。当随 ADD FILE 一起指定时,size 是文件的初始大小。当随 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。MAXSIZE 
指定最大的文件大小。max_size 
是最大的文件大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件大小将一直增长,直至磁盘填满为止。当磁盘即将填满时,Microsoft Windows NT&reg; 应用程序日志将向管理员发出警告。UNLIMITED 
指定文件大小可一直增加直至磁盘已满。FILEGROWTH 
指定文件增长的增量。 growth_increment 
每次需要新的空间时为文件添加的空间大小。值为 0 表示不增长。该值可按 MB、KB 或 % 的形式指定。指定一个整数,不要包含小数位。如果指定了 %,那么文件增量为文件发生增长时文件大小的指定百分比。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果 FILEGROWTH 未指定,默认值为 10%,且最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。 
<state_option>

解决方案 »

  1.   

    MAXSIZE 设置为 UNLIMITED,数据库就可以一直增长,直至用完包含该数据库的磁盘上的所有空间。
      

  2.   

    yoyo2002考虑问题不够仔细,这样操作系统的文件应该有最大尺寸的限制,最好的方法应该使用添加文件组,添加文件组所属文件!
      

  3.   

    1.pls check the tempdb size,and set automatically grow .
    2.DBCC SHRINKDATABASE('db_name')
      GO
      BACKUP TRAN db_name WITH TRUNCATE_ONLY
      GO
    3.In Enterprise Manager right click on the database, choose properties, select the data files tab and see if the automatically grow file option is checked
    4.restart MSSQLSERVER service.
    5.recreate primary key.