首页 > 数据库 >sqlserver 移动用户及系统数据库文件位置方法

sqlserver 移动用户及系统数据库文件位置方法

时间:2023-04-18 13:35:07浏览次数:45  
标签:name database 数据库 sqlserver Server master SQL 移动用户


查了下文档即使到2019版本,sqlserver移动数据库文件位置依然是要停机的,注意待移动文件大小,估计好停机时间。

 

sqlserver 移动数据库文件位置分为两大类:

  • 用户数据库
  • 系统数据库

系统数据库又可分为再分为:

  • 除master及resource以外的系统数据库(model,msdb,tempdb)
  • master数据库
  • resource数据库

下面分别来看

 

一、 用户数据库

1. 检查文件逻辑名称及物理位置

SELECT name,physical_name,state_desc FROM sys.master_files WHERE database_id = DB_ID(N'testdb');

其中name是逻辑名,physical_name是物理位置,记下这两列值

2. OFFLINE待移动数据库

use master;
ALTER DATABASE database_name SET OFFLINE;

3. 将一个或多个文件移动或复制到新位置

4. 对每个移动的文件,执行以下语句 

ALTER DATABASE database_name MODIFY FILE (NAME=logical_name,FILENAME='new_path\os_file_name');

5. ONLINE数据库

use master;
ALTER DATABASE database_name SET ONLINE;

执行online命令后会进入“In Recovery”状态,recover完成后变为可读写状态

6. 检查文件移动后位置

SELECT name,physical_name,state_desc FROM sys.master_files WHERE database_id = DB_ID(N'testdb');

 

二、 除master及resource以外的系统数据库

步骤与用户数据库类似,只是执行顺序略有不同,另外从数据库offline改为了关闭实例。

1. 检查文件逻辑名称及物理位置

SELECT name,physical_name,state_desc FROM sys.master_files WHERE database_id = DB_ID(N'msdb');

2. 对每个准备移动的文件,先执行以下语句 

ALTER DATABASE database_name MODIFY FILE (NAME=logical_name,FILENAME='new_path\os_file_name');

3. 关闭sqlserver实例

4. 将一个或多个文件移动或复制到新位置

5. 启动sqlserver实例

6. 检查文件移动后位置

SELECT name,physical_name,state_desc FROM sys.master_files WHERE database_id = DB_ID(N'msdb');

 

三、 master系统数据库

比较复杂,也容易出问题,没事最好别移,换操作系统盘符可能还比较简单。

1. 关闭sqlserver实例

2. 更改启动参数路径

“SQL Server配置管理器” -> “SQL Server服务”节点 -> 右击SQL Server实例(MSSQL2016) -> 选择“属性” -> 单击“启动参数”。

sqlserver 移动用户及系统数据库文件位置方法_sql

可以看到默认指定了3个参数,每个参数后紧跟文件路径(没有空格):

  • -d:datafile
  • -e:errorlogfile
  • -l:logfile

修改对应参数后内容,指定master库数据和日志文件新路径

-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\DATA\master.mdf
-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\Log\ERRORLOG
-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\DATA\mastlog.ldf

3. 移动master库数据文件和日志文件到新目录

注意errorlogfile如果更改了位置可以不移动,会重新生成

4. 启动 SQL Server 实例服务

5. 检查文件移动后位置

SELECT name,physical_name,state_desc FROM sys.master_files WHERE database_id = DB_ID(N'master');

 

四、 Resource系统数据库

Resource为只读数据库,不直接显示在系统数据库中,它包含SQL Server中的所有系统对象。这个数据库不能移动,也不能通过sqlserver备份。

Resource 数据库的位置是 <drive>:\Program Files\Microsoft SQL Server\MSSQL<version>.<instance_name>\MSSQL\Binn\

 

参考

https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-user-databases?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/relational-databases/databases/move-system-databases?view=sql-server-ver15

https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/resource-database?view=sql-server-ver15

https://social.technet.microsoft.com/wiki/contents/articles/51296.sql-server-move-master-database-to-another-location-drive.aspx


标签:name,database,数据库,sqlserver,Server,master,SQL,移动用户
From: https://blog.51cto.com/u_13631369/6203182

相关文章

  • SqlServer 从执行计划缓存发现问题sql
    注意以下sql都较复杂,在数据库中执行时间可能较长,不要执行过于频繁。一、隐式转换sql版本1--找到含有隐式转换且会导致indexseek变为indexscan的语句–findalltheplansandquerywhicharebeingcomparedwithwrongdatatypeinqueriesandthuscasuingtheconversio......
  • 查询sqlserver列名,行数及表说明
    查询sqlserver表名,行数及表说明SELECTD.NAMETABLE_NAME,B.ROWSTABLE_ROWS,F.VALUETABLE_COMMENTFROMSYSOBJECTSDLEFTJOINSYS.EXTENDED_PROPERTIESFOND.ID=F.MAJOR_IDANDF.MINOR_ID=0LEFTJOINSYSINDEXESBOND.ID=B.IDANDB......
  • 数据库测试指南
    为什么要测试数据库?数据映射在软件系统中,数据经常从UI(用户界面)到后端数据库之间来回穿梭,反之亦然。因此,这些是需要注意的一些方面:检查用户界面/前端表单中的字段是否与数据库表中的相应字段有一致的映射。通常情况下,这种映射信息在需求文件中被定义。每当在应用程序的前......
  • sqlserver 如何查看备份还原进度及历史备份信息
    有时需要给业务方备份还原数据库,如果库比较大,可能时不时会被问“怎么样啦?”,“还剩多少哇?”,如果看不到监控备份还原的进度就很悲催,答不上来...SQLServer主要有三种方法备份还原进度:利用SSMS备份还原,查看进度条(还原的不准)利用SQL的stats关键字指定每完成百分之几显示利用动态性能视......
  • 如何利用sqlserver重置Administrator用户密码
    原文是sqlserver2005的,测试windows2016+sqlserver2017时此功能已经不可用,不过还是记录下重置方法。原理是通过sqlserver的OLE选项创建一个用户并将其添加至Administrator组,随后便可用该用户登录服务器修改administrator用户密码。OLE相当于给你一个cmd环境,让你可以输入cmd命令......
  • sqlserver 数据库状态转换图
    今天发现一个很好的图,非常清晰的展示了sqlserver的各种状态及切换原因/方法。简单介绍一下各种状态:ONLINE(在线):数据库正常运行。只有数据库成功恢复后会进入这个状态,也只有这种状态数据库是正常可用的。RESTORING(正在还原):正在执行数据库还原。如果还原时使用NORECOVERY模式,数据库会......
  • oracle、达梦数据库、MySQL数据创建表与字段注释
    /**1.oracle注释*//*表本身注释*/commentontable表名is'注释信息';/*字段注释*/commentoncolumn表名.字段名is'注释信息';/*实例如下:*/commentontableUSERis'用户表';commentoncolumnUSER.IDis'主键ID';/**2.MySQL注释*//*表本身注释*/altertable表名co......
  • Spring Boot - Spring Boot 数据库连接池 Hikari 介绍
    SpringBoot数据库连接池Hikari介绍介绍TheHikariCPdesignaestheticisMinimalism.Inkeepingwiththesimpleisbetterorlessismoredesignphilosophy,someconfigurationaxisareintentionallyleftout.HikariCP奉行极简主义的设计美学。为了保持“越......
  • Oracle Recovery Tools快速恢复断电引起的无法正常启动数据库---惜分飞
    由于异常断电,数据库启动报错ORA-01113和ORA-01110,ORA-00322和ORA-00312以及ORA-00314和ORA-00312错误MonApr1709:35:042023ALTERDATABASEOPENErrorsinfileD:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl\trace\orcl_ora_10192.trc:ORA-01113:文件1需要介质恢......
  • 54 openEuler搭建Mariadb数据库服务器-Mariadb介绍
    54openEuler搭建Mariadb数据库服务器-Mariadb介绍MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品,MariaDB还提供了许多更好的新特性。54.1MariaDB的架构MariaDB的架构......