SQL Server 中如何移动tempdb到新的位置
操作步骤:
1、检查tempdb的逻辑名字和它的存在位置。可以使用下面语句:
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

2、停止数据库服务.

3、拷贝原来tempdb的文件到新的位置(原来文件位置可以通过上述查询得到)。拷贝完毕后,启动数据库服务。


4、执行如下命令:
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb.mdf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp2, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_2.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp3, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_3.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp4, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_4.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp5, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_5.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp6, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_6.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp7, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_7.ndf'); ALTER DATABASE tempdb
MODIFY FILE (NAME = temp8, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb_mssql_8.ndf'); GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\templog.ldf');
GO
在这里,name=tempdev 和templog 等是tempdb的逻辑名字,FILENAME = N'D:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\系统临时数据库\tempdb.mdf'是tempdb的新位置.
执行结果如下:

5、然后检查tempdb移动是否成功。
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

6、接着重启数据库服务

7、注意在步骤3中,我们重新启动数据库服务的时候,还是会在老的tempdb路径下生成一套tempdb的数据库文件,现在它们都是没用的垃圾文件了,我们要去删掉它们。

特别提示:
存放SQL Server数据库文件及数据库日志文件的文件夹,必须要开放对Windows用户组"NT Service\MSSQLSERVER"(也就是SQL Server服务的执行账户)的Full control权限,否则会导致上面步骤6中重启SQL Server服务失败。

如果你不知道SQL Server服务的执行账户是什么,可以通过在Windows服务(services)管理列表中,找到SQL Server数据库引擎服务(如果你只有一个SQL Server Instance,一般就是"SQL Server (MSSQLSERVER)"),然后查看其"Log On As"列的账户:

如果你发现SQL Server执行账户不是上图中的"NT Service\MSSQLSERVER",那么需要将存放SQL Server数据库文件及数据库日志文件的文件夹,开放相应Windows账户的Full control权限。
这一点要千万注意,否则SQL Server服务启动不起来会非常麻烦,如果实在因为移动tempdb到新位置后,SQL Server服务启动不起来,可以参考下面这个帖子的内容:
How to Start SQL Server without TempDB
SQL Server 中如何移动tempdb到新的位置的更多相关文章
- 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结
Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...
- SQL Server 中关于系统库Tempdb总结
Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...
- SQL Server中约束的介绍
SQL Server中约束的介绍(转载收藏) Posted on 2010-09-03 11:05 grayboy 阅读(8501) 评论(0) 编辑 收藏 作者:GrayBoy 出处:http:// ...
- SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)
原文:SQL Server中的TempDB管理--TempDB基本知识(为什么需要版本存储区) 参考资料来自: http://blogs.msdn.com/b/sqlserverstorageengi ...
- SQL Server中TempDB管理(version store的逻辑结构)
原文:SQL Server中TempDB管理(version store的逻辑结构) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/arch ...
- SQL Server中tempdb的management
对<SQL Server中tempdb的management>的一些更正和补充 对<SQL Server中tempdb的management>的一些更正和补充 前几天看了这 ...
- 对《SQL Server中tempdb的management》的一些更正和补充
对<SQL Server中tempdb的management>的一些更正和补充 前几天看了这篇文章:SQL Server中tempdb的management 发现里面有些内容不是很准确 文 ...
- SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb。
(1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息.这些系统信息包括所有的登录信息.系统设置信息.SQL Server的初始化信息和其他系 ...
- SQL Server中tempdb的管理
原文:SQL Server中tempdb的管理 资料来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/ ht ...
随机推荐
- 2017-12-21 FriceEngine试用与API中文化
早先就听闻FriceEngine已有中文接口版本, 可惜没有机会尝试. 经原作者 @大笨蛋千里冰封 (Github账号 @ice1000 )建议, 在FriceEngine的DSL封装的接口基础上, ...
- 移动端安卓手机不能识别border 0.5px解决方案
由于安卓手机无法识别border 0.5px,因此我们要用0.5px的话必须要借助css3中的-webkit-transform:scale缩放来实现, 原理:将伪元素的宽设为200%,height设 ...
- Stackoverflow 珠玑:用于分组的 LINQ 扩展方法
从 stackoverflow.com 上抄来的,将 IEnumerable 中的元素进行切分的方法,无动态内存分配,地球上最快的实现: public static class LinqExtensi ...
- couldn't locate lint-gradle-api-26.1.2.jar for flutter project
Could not find com.android.tools.lint:lint-gradle:26.1.2 当我尝试构建发行版本APK 时导致报这种错误,无法发行,针对自己的项目作出了相关修改, ...
- 洗礼灵魂,修炼python(43)--巩固篇—经典类/新式类
经典类 1.什么是经典类 就是在使用class关键词时,括号内不添加object类的就叫经典类,前面的博文里是绝对解析过的,所以你应该知道,经典类现在已经仅存在于python2了,因为python3不 ...
- centos6.9设置桥接网络模式方法
第一步:设置 VMware 在 VMware 中打开[编辑]->[虚拟网络编辑器],添加 VMnet0,并选择桥接模式.需要注意的是,需要选择“桥接到”的网卡,使用无线网卡就选无线网卡,使用有线 ...
- 10 种机器学习算法的要点(附 Python 和 R 代码)
本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿.未经许可,禁止转载!英文出处:SUNIL RAY.欢迎加入翻译组. 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关 ...
- 【转】handbrake使用教程
原文地址http://tieba.baidu.com/p/2399590151?pn=1 现在的很多压制教程基本都是使用megui或者mediacoder的,这两个软件使 ...
- [MySQL学习]STRICT_ALL_TABLES相应的OUT of RANGE VALUE FOR COLUMN和DATA truncated FOR COLUMN
版权声明:声明:本文档能够转载,须署名原作者. 作者:无为 qq:490073687 周祥兴 zhou.xiangxing210@163.com https://blog.csdn.net/Rooki ...
- sql中的exists用法
查询选修语文(cno=21)的学生名单 SELECT sname FROM student WHERE EXISTS ( SELECT FROM sc WHERE sc.cno = AND sc.sn ...