• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
PowerCoder
博客园    首页    新随笔    联系   管理    订阅  订阅

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

 

posted @ 2019-01-26 11:17  PowerCoder  阅读(4283)  评论(4)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3