SQL2005的TEMPDB怎样转移到其他盘符

zhengdows 2010-04-10 04:52:43
我们的数据库设置了两台服务器的合并复制,由于需要复制的表的数据量很大,所以导致TEMPDB经常占用很多的空间,有时候TEMPDB所在的盘符空间没有了,TEMPDB又不能SHRINK,请问能不能把它转移到其他盘符?
我在ManagementStudio中看,好象TEMPDB不能分离和附加,如果停止服务,把文件剪切到其他位置,又怕系统不能正常启动,请问有没有其他的办法?
...全文
913 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcw321321 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
SQL code
SQL2005/2008 tempdb数据库路径的转移
--By :Tony

1.停止SQL服务

2.复制 tempdb数据库的两个文件(.mdf/.ldf) 到新文件夹,如(D:\tempdb)

3.启动SQL服务

4.打开SQL Server Management Studio,执行以下代码:

USE master;
GO
ALTER……
[/Quote]

我发现直接使用
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\tempdb\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\tempdb\templog.ldf');
GO

下次SQL 重启就改过来了,不知道LS牛人们为什么需要那么多步骤,还请多多指教。
cxmcxm 2010-04-10
  • 打赏
  • 举报
回复
笨办法,分离数据库,重装数据库到别的位置,再附加数据库.
Leshami 2010-04-10
  • 打赏
  • 举报
回复
如果不停止的情况下可以考虑为其增加一个ndf文件,将ndf至于其他的驱动器上
Mr_Nice 2010-04-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]
SQL code
SQL2005/2008 tempdb数据库路径的转移
--By :Tony

1.停止SQL服务

2.复制 tempdb数据库的两个文件(.mdf/.ldf) 到新文件夹,如(D:\tempdb)

3.启动SQL服务

4.打开SQL Server Management Studio,执行以下代码:

USE master;
GO
ALTER……
[/Quote]

up
feixianxxx 2010-04-10
  • 打赏
  • 举报
回复
htl258_Tony 2010-04-10
  • 打赏
  • 举报
回复
SQL2005/2008 tempdb数据库路径的转移
--By :Tony

1.停止SQL服务

2.复制 tempdb数据库的两个文件(.mdf/.ldf) 到新文件夹,如(D:\tempdb)

3.启动SQL服务

4.打开SQL Server Management Studio,执行以下代码:

USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\tempdb\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'D:\tempdb\templog.ldf');
GO

5.再次停止SQL服务

6.删除原tempdb旧文件

7.再次启动SQL服务,大功告成。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/htl258/archive/2010/04/10/5471174.aspx
--小F-- 2010-04-10
  • 打赏
  • 举报
回复
SQL Server会自动创建一个名为tempdb的数据库作为工作空间使用,当您在存储过程中创建一个临时表格时,比如(CREATE TABLE #MyTemp),无论您正在使用哪个数据库,SQL数据库引擎都会将这个表格创建在tempdb数据库中。


SQL Server会自动创建一个名为tempdb的数据库作为工作空间使用,当您在存储过程中创建一个临时表格时,比如(CREATE TABLE #MyTemp),无论您正在使用哪个数据库,SQL数据库引擎都会将这个表格创建在tempdb数据库中。

而且,当您对大型的结果集进行排序,比如使用ORDER BY或GROUP BY或UNION或执行一个嵌套的SELECT时,如果数据量超过了系统内存容量,SQL数据库引擎就会在tempdb中创建工作表格。在您运行DBCC REINDEX或者向现有的表格中添加集群序列时, SQL数据库引擎同样会使用tempdb。实际上,任何针对大型表格的ALTER TABLE命令都会在tempdb中吃掉大量的磁盘空间。

在理想状态下,SQL会在完成指定操作后自动清理,并销毁这些临时表格,但是,很多问题都会导致错误。比如,您的代码创建了一个事务,但是却没能执行或重新运行,那么这些孤儿对象将遗留在tempdb中。而且,对大型数据库运行DBCC CHECK时,它还会消耗掉大量的空间,您往往会发现tempdb比设想的要大很多,甚至还会收到SQL即将用完磁盘空间的出错信息。

您有很多方法可以来修正这一情况,但从长远看来,您需要执行其它的步骤来保证正常使用。

为tempdb“减肥”最简单的办法就是关闭SQL数据库引擎然后重新启动,但是在重要的任务中,这样做可能难度很大;另一方面,如果您已经处于无法承受的状态,那么我的建议就是将这个坏消息告知您的上司,然后开始操作。

如果您幸运拥有另外一块磁盘可以用来放置tempdb,可以进行如下的操作:

USE master

GO

ALTER DATABASE tempdb modify file (name = tempdev, filename = NewDrive:Pathtempdb.mdf )

GO

ALTER DATABASE tempdb modify file (name = templog, filename = NewDrive:Pathtemplog.ldf )

GO

还有三项关于tempdb的属性应该检查:自动增长标记,初始大小和恢复模式,以下是关于这些属性的小窍门:

自动增长标记:记住将这个标记设为True。

初始大小:tempdb的初始大小要根据常用的工作负载来设定,如果有很多用户在使用GROUP BY、ORDER BY或者对大型表格进行聚合操作,那么您的常用工作负载会相当大。如果服务器脱机时,您可能需要检查日志文件与数据文件是否位于同一磁盘,如果这样的话,应当将需要将它们转移到新的磁盘上,您只需指明相应的数据库并使用相同的命令即可。

恢复模式:将恢复模式设定为True意味着让SQL自动截去tempdb的日志文件(在使用了每个表格之后),要找出tempdb所使用的恢复模式,可以使用如下命令:

SELECT DATABASEPROPERTYEX( tempdb , recovery )

恢复模式有三种选择:简单、完整或大量记录(bulk-logged),如要改变设置,可以使用以下命令:

ALTER DATABASE tempdb SET RECOVERY SIMPLE

这些步骤可以优化您系统中使用的tempdb,除了解决磁盘空间问题外,您还会发现SQL Server系统性能的提升。
SQLSERVER2008的系统数据库迁移 意义: 就是从C盘移动其他分区 从这个硬盘移动其他硬盘,数据库还能启动 为一般数据库的迁移做准备 系统数据库迁移主要迁移以下数据库 第一类:tempdb,model和msdb 第二类:master,mssqlsystemresource 具体的迁移步骤: 一、对于master数据库 默认SQL Server安装完成后,SQL Server的4个系统数据库(Master,Model,MSDBTempDB)都会被自动安放在安装路径 下,也就是系统盘的Program Files文件夹下。所带来的问题就是绝大多数数据库服务器为了同时照顾到性能,成本和 高可用性这三个方面,都会将系统安装在一个Raid1阵列上,通常这个Raid1阵列还不一 定会用上15K的SAS,有的只是用10K的SAS,更有甚者,为了成本,装2个7.2K的SATA也就 完事了。再加上Raid1阵列本身就是一种读取性能非常强,但是写入性能相当差的阵列形 式,所以,对于系统数据库,尤其是对TempDB数据库来说,是非常不利的,也肯定会对 整个SQLServer的性能造成影响。所以将系统数据库迁移到性能更加高的阵列上,是一个 解决硬件性能瓶颈的基础解决方案。 下面就像大家介绍一下如何将系统数据库迁移到其他分区上(以Microsoft SQL Server 2008 R2为例): 1. 首先迁移master数据库,master数据库是整个SQL Server实例的核心,所有的设置都存放在master数据库里,如果master数据库出现问 题,整个实例都将瘫痪。首先打开SQL Server Configuration Manager,在左边的列表框中选中SQL Server Services节点,然后在右边的列表框中找到需要迁移系统数据库的实例的那个SQL Server服务,比如说SQLServer(MSSQLSERVER),停止这个实例的服务(不会停的去 菜场买块豆腐撞死算了),然后右键单击,选中最底下的"Properties",并且切换到 "Advanced"标签,如下图所示: 2. 看到"Startup Parameters"了吧,这里的参数就是需要我们更改的。如下图所示: 把这段字符整理一下就是这样: -dC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf; -eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG; -lC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf 基本上看出来了吧,"-d"后面的就是master数据库数据文件的位置,"-e"是该SQL Server实例的错误日志所在的位置,至于"- l"就是master数据库日志文件所在的位置了。修改数据文件和日志文件的路径到适当 为位置,错误日志的位置一般不需要做变更,例如将数据文件存放到D盘的SQLData文 件夹下,日志文件存放到E盘的SQLLog文件夹下,则参数如下: -dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf 点击"OK"保存并关闭对话框。 3. 然后需要做的是将master数据库的数据文件和日志文件剪切到刚刚"Startup Parameters"定义的路径中,接着就可以启动该实例SQL Server服务了。 注意,此时可能仍然会有出现SQL Server服务无法启动的情况,确保刚刚配置准确无误,然后就是NTFS权限的事情了, 如果你不是用Local System来启动SQL Server服务,那么更改完存放路径后,你需要给新的盘符或文件夹相应的权限,这样 服务才能启动,建议直接给相应账号"Full Control"的权限,至于为什么嘛,那是经验,原因得要问Microsoft了。 好了,到这里,master数据库就算迁移完成了。 对于empdb,model和msdb 1、修改文件 路径 1、修改文件 路径 --Move tempdb ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf'); ALTER DATABASE tempdb
某集团数据库系统维护管理规范 1、目的 为了保证业务系统稳定高效运行,针对目前的应用现状,加强对数据库运行环境的 维护管理,加强数据库系统可用性,可靠性,可扩展性等方面的改善,确保某集团各业 务系统运行稳定和数据安全.制订此规范。 2、范围 本规范适用于某集团所有信息系统。 3、数据库维护管理内容 数据库管理维护主要包含以下内容: 数据库用户以及权限的分配与维护 数据库的备份与恢复的设置和演练 数据库性能的定期巡检和优化 数据库高可用性,可扩展性架构方面的不断研究和应用 数据库方面新项目的可行性研究,根据预期规模确定合适架构 数据库系统包括整体架构的监控 不断学习和研究数据库领域最新技术,并适时投入应用 4、数据库的物理环境 数据的物理环境是指数据库(包括SQLServer、MySQL Server)所处的安装目录以及网络环境,数据库系统是整个业务系统的重要部分,在安 装初期就要考虑其所处的环境,以避免安全性和可维护性上的问题。 4.1、网络环境 对于数据库所处的网络环境,使用以下基本原则: 数据库服务器不使用公网IP地址。 局域网内若存在低速VPN环境,不可使用数据库的高可用方案,原则上不建议使用 镜像、复制等方案,但可考虑使用ServiceBroker(异步)方案。 除业务特殊要求外,原则上不使用数据库服务默认端口1443,新端口设置后必须 通知所有使用数据库的开发人员。 配置防火墙以开放SQLServer相应的服务端口。 4.2、目录设置 对于SQLServer的安装目录设置,使用以下基本原则: 用户数据库数据文件要与日志文件存放在不同的磁盘,主要针对业务比较繁忙的 用户数据库。 TempDB数据库要单独存放在1个或者2个磁盘驱动器上,主要针对业务比较繁忙的 服务器实例。 数据库安装后要设置本地备份目录,目录结构: 数据目录(或磁盘名)\实例名\数据库名\DayBak 数据目录(或磁盘名)\实例名\数据库名\WeekBak 数据目录(或磁盘名)\实例名\数据库名\MonthBak 数据目录(或磁盘名)\实例名\数据库名\YearBak 若没有新增数据库实例则省略,保存备份的数据目录大小至少保证是数据库大小的 10倍以上,或者至少保证能保留一周的备份文件。 "数据库系统 "描述 "存放位置 "文件夹名称 " "SQL Server "数据库程序文件 "第二个盘符 "Microsoft SQL Server " " "默认数据库文件 "第二个盘符(如"SQLServer DB " " " "采用SAN存储则 " " " " "为第三个盘符)" " " "应用数据库文件 " "(应用描述)DB,如HotelD" " " " "B " "MySQL Server"数据库程序文件 "第二个盘符 "MySQL Server " " "数据库文件 "与数据文件同一"Data " " " "盘符 " " "其它 "- "- "- " 表一:数据库文件存放规范 "数据库系统 "存放位置 "一级目录 "二级目录 " "SQL Server "第二个盘符("(应用描述)DB_Bak "DayBackup(日备份) " " "如采用SAN存 ",如HotelDB_Bak " " " "储则为第三个" " " " "盘符) " " " " " " "WeekBackup(周备份) " " " " "MonthBackup(月备份) " " " " "YearBackup(年备份) " " " " "DBDataBackup(数据文件 " " " " "备份) " "MySQL "第二个盘符("(应用描述)DB_Bak " " "Server "如采用SAN存 ",如SangemWebDB_B"按日期建立备份文件,备 " " "储则为第三个"ak "份命令脚本:mysqldump -" " "盘符) " "-uroot -proot -R " " " " "DBname>F:\ " " " " "SangemWebDB_Bak\2011082" " " " "4.sql(编写Bat文件,建 " " " " "立计划任务进行定时备份 " " " " "数据文件) " 表二:数据库备份文件存放规范 4.3、文件设置 文件设置是建立数据库时的数据文件设置,可按照以下原则建立: 对于超过10G以上的用户数据库,数据文件的数目和服务器CPU数目一致(CPU数目 指逻辑CPU数目)。 对于10G以下的用户数据库,使用单一数据文件。 日志文件使用一个,所有类型的数据库日志文件都要保证是一个。 多个数据文件的数据库,数据文件的大小要保持一致。 对于用户访问量较大,数据较大的数据库,需要对tempdb数据库增加数据文件的 数目,设置为CPU数目的1/2。 4.4、数

34,597

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧