SQL数据库空间不足怎么办

当存放SQL Server数据库的硬盘空间不足或性能、质量不佳时,数据库情绪自然不会好。为了调动数据库积极性,最好的办法莫过于给数据库找个宽敞、安全的新家。这等搬家的大事,绝不可轻视之。-推荐文章

  我们知道,在新建一个数据库的时候,我们会分别指定其数据文件(.mdf文件)以及事务日志文件(.ldf文件)存放的位置。所以数据库搬家,也就是把这两个文件安置到一个新地方去。
  在SQL Server中,数据库有两大家族:用户数据库与系统数据库。对于它们要分别采用不同的方法来实现。
一、用户数据库搬家
  操作方法有以下两种
  方法1:在企业管理器中进行
  (1)在企业管理器中选定要搬家的数据库名,在其上单击鼠标右键,出现如图1所示对话框。
  (2)选中“所有任务”,在其子菜单中单击“分离数据库”。
  (3)将该数据库的数据文件和日志文件从旧的位置(如D:\MSSQL\Data)拷贝到新的位置(如E:\SQLDataNew)。
  (4)再在企业管理器中选中“数据库”文件夹,在其上单击鼠标右键,在出现的对话框中选中“所有任务”,在其子菜单中单击“附加数据库”。
  (5)在出现的“附加数据库”对话框中,选择数据库的两个文件的新位置。
  方法2:用SQL系统存储过程sp_detach_db/sp_attach_db实现
  (1)使用下面语句分离数据库:
  USE master
  GO
  EXEC sp_detach_db 'mydb'
  GO
  (2)将该数据库的数据文件和日志文件从旧的位置拷贝到新的位置。
  (3)使用下面语句重新附加数据库:
  USE master
  GO
  EXEC sp_attach_db
  'mydb', 'E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
  GO
二、系统数据库搬家
1.master数据库搬家
  (1)由于SQL Server每次启动的时候都需要读取master数据库,因此必须在企业管理器中改变SQL Server启动参数中master数据文件和日志文件的路径。
  在 SQL Server属性的“常规”选项卡下面有一个叫做“启动参数”的按钮,单击后可以看到所示的界面。
  其中,-d用来指定master数据库文件的路径,而–l用来指定master数据库日志文件的路径。
  删除旧的master数据库文件和日志文件的路径,添加新的master数据文件和日志文件所在的路径,如:
  -dE:\ SQLDataNew \master.mdf
  -lE:\ SQLDataNew \mastlog.ldf
  (2)停止SQL Server服务,将master.mdf文件和mastlog.ldf文件拷贝到新的位置,如E:\ SQLDataNew文件夹中。
  (3)重新启动服务即可。
  小技巧:如果在“启动参数”添加的master数据库文件和日志文件的路径或文件名有误,就会造成SQL Server启动不起来。而此时想改正错误又因SQL Server启动不了而重设不了“启动参数”。其实这两个文件路径和文件名是放置在注册表HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Miccrosoft SQL Server\你安装SQL服务器的名\MSSQLServer\Parrmeters下的参数SQLArg1和SQLArg2中,修改这两个参数的值即可。
2. msdb数据库和model数据库搬家
  (1)对于msdb数据库和model数据库,我们不能在企业管理器中实现分离和附加,只能用sp_detach_db和sp_attach_db存储过程来分离和附加这两个数据库。
  其中,对于msdb数据库,还应确保SQL Server代理当前没有运行,否则sp_detach_db存储过程将运行失败,并返回如下消息:
  “无法除去数据库 'msdb' ,因为它当前正在使用。”
  (2)调出如图4所示的“启动参数”对话框,添加新参数-T3608。这样,启动SQL Server,它就不会恢复除master之外的任何数据库。
  (3)重新启动SQL Server,再用下面命令分离msdb或者model数据库:
  EXEC sp_detach_db 'msdb'
  GO
  (4)将数据文件和日志文件移到新的位置,然后再用下面命令重新附加msdb数据库或者model数据库:
  USE master
  GO
  EXEC sp_attach_db
  'msdb', ‘E:\SQLDataNew\msdbdata.mdf', ' E:\SQLDataNew\msdblog.ldf '
  GO
  (5)在企业管理器中,从“启动参数”框中删除-T3608跟踪标记,再停止并重新启动SQL Server。
3. tempdb数据库搬家
  对于tempdb数据库,则可以直接使用ALTER DATABASE语句来为数据文件和日志文件指定新的存放位置,如下所示:
  USE master
  GO
  ALTER DATABASE tempdb MODIF
  Y FILE (NAME=tempdev, FILENAME ='E:\SQLDataNew \tempdb.mdf')
  GO
  ALTER DATABASE tempdb MODIF
  Y FILE(NAME=templog, FILENAME=
  ' E:\SQLDataNew \templog.ldf')
  GO
  至此,SQL Server 中数据库全部搬家完成。

posted @ 2007-10-24 15:24  yfcomeon  阅读(816)  评论(0编辑  收藏  举报