SQL Server 修改数据库物理文件存在位置

关键词:迁移文件,迁移temp库(这怎么迁移呢,用方法2即可,需要重启实例)

如果系统数据库参考:https://blog.51cto.com/joetang/1687913

三种均需要离线;

一共分为(1)脱机迁移和(2)在线迁移。

(1)迁移方案一(脱机迁移)

SQL Server创建新库时,默认会把数据存放在C盘中,一旦 数据库 中的存储数据多了以后,C盘的空间就会所剩无几。解决方案是将存放数据的物理文件迁移到其他盘。具体流程为:

1、将现有的数据库脱机

ALTER DATABASE DB1 SET OFFLINE WITH ROLLBACK IMMEDIATE;

2、将数据库文件移到新的位置

文件复制完成以后需要:右键-属性-安全-在组或用户名处添加Authenticated Users-更改该组权限为完全权限,否则接下来的操作会报

中间可能存在的问题:

消息 5120,级别 16,状态 101,第 17 行
无法打开物理文件“D:\MSSQL\DATA\testdb.mdf”。操作系统错误 5:“5(拒绝访问。)”。
消息 5120,级别 16,状态 101,第 17 行
无法打开物理文件“D:\MSSQL\DATA\testdb _log.ldf”。操作系统错误 5:“5(拒绝访问。)”。
消息 5181,级别 16,状态 5,第 17 行
无法重新启动数据库“ctrip”。将恢复到以前的状态。
消息 5069,级别 16,状态 1,第 17 行
ALTER DATABASE 语句失败。

3、修改数据库关联文件的指向

--修改物理文件名
ALTER DATABASE DB1 MODIFY FILE(NAME = DB1, FILENAME = X:\SQLServer\DB1.mdf);
ALTER DATABASE DB1 MODIFY FILE(NAME = DB1_Log, FILENAME = X:\SQLServer\DB1_Log.ldf); -- 修改逻辑名
ALTER DATABASE [db_tank] MODIFY FILE (NAME=N'db_tank1_data', NEWNAME=N'db_tank_data')
ALTER DATABASE [db_tank] MODIFY FILE (NAME=N'db_tank1_log', NEWNAME=N'db_tank_log')

4、将数据库进行联机

ALTER DATABASE DB1 SET ONLINE;

(2)迁移方案二(在线迁移)

  

MS SQL 数据库迁移文件,这里说的不是将数据库迁移到另外一台服务器,只是在服务器不同磁盘目录内做迁移。移动数据库文件的情况大致有下面一些:
  1: 事先没有规划好,数据库文件或日志文件增长过快,导致某个盘或整个磁盘空间不足,需要移动数据文件或日志文件
  2: 纯粹由于业务需求,数据增长过快。
  3: 为了更好的IO的性能,需要将数据文件、日志文件分布到不同磁盘,减轻IO压力,提供IO性能。
  4:故障恢复。例如,数据库处于可疑模式或因硬件故障而关闭。
案例:现在我在数据库实例中有数据库MyAssistant,(假设)由于事先没有规划好,导致数据文件位于E:\DataBase目录下, 我们需要将数据文件移动到D:\DataBase_Data目录下,
 

 
将日志文件移动到F:\DataBase_Log目录下。
步骤1:对数据库中每个要移动的文件(数据文件/日志文件),通过下面命令指定到新的目录 
--查看逻辑名
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb'); --迁移位置
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 --停止服务,复制文件到指定位置
--开启服务

如果有多个数据库的数据文件/日志文件需要移动,可以通过一系列上述命令执行
ALTER DATABASE DATABASE_ID1
MODIFY FILE(NAME='DATABASE_NAME', FILENAME='....mdf');
ALTER DATABASE DATABASE_ID2
MODIFY FILE(NAME='DATABASE_NAME', FILENAME=.....mdf');
.......
步骤2:
将转移数据库脱机然后将数据库复制到,设定好的盘符下,如果文件名也改了,那也要改。再联机

(3)迁移方案三:直接分离附加

【1】分离

   EXEC sp_detach_db 'test'

【2】复制文件到自己想要的位置

【3】附加

  EXEC sp_attach_db @dbname = test', @filename1 =@data_file, @filename2 = @log_file

  EXEC sp_attach_db @dbname = test', @filename1 ='d:\test\test_data.mdf', @filename2 ='d:\test\test_log.mdf'

  

(4)restore with move 'logic_name' to 'physics_name'

restore move,with move恢复数据库

USE [master]
RESTORE DATABASE [test]
FROM DISK = N'D:\DBBackup\testfull.bak' WITH FILE = 1,
MOVE N'test' TO N'D:\MSSQL\test.mdf',
MOVE N'test_log' TO N'D:\MSSQL\test_log.ldf',
NOUNLOAD,NORECOVERY , STATS = 5

(4.16)sql server迁移DB文件(同一DB内)的更多相关文章

  1. sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

    转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件 ...

  2. SQL Server 在缺少文件组的情况下如何还原数据库

    SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为 ...

  3. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  4. 从Microsoft SQL Server迁移到MySQL指南

    转自 https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 由于 MySQL 将节约成本.自由选择平台.特性丰富等优 ...

  5. SQL Server 迁移数据库 (一)导入和导出

    今天正好换服务器,记录一下迁移数据库的过程. 以前经常用备份还原法,今天试试‘SQL Server 2016 导入和导出数据’这个看怎么玩. 1. 建数据库结构 1.1 在需要迁移的数据库名字上右击, ...

  6. SQL Server里在文件组间如何移动数据?

    平常我不知道被问了几次这样的问题:“SQL  Server里在文件组间如何移动数据?“你意识到这个问题:你只有一个主文件组的默认配置,后来围观了“SQL Server里的文件和文件组”后,你知道,有多 ...

  7. SQL Server中数据库文件的存放方式,文件和文件组

    原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html   SQL Server中数据库文件的存放方式,文件和文件组 ...

  8. .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)

    .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...

  9. MS SQL Server迁移至Azure SQL(官方工具)

    前面,我有尝试过将MS SQL Server数据数据迁移至Azure SQL,请参考<MS SQL Server迁移至Azure SQL>,使用的是第三方工具,但现在官方更新了工具,我们尝 ...

  10. [SQL Server]一次执行资料夹内的.sql 指令码

    原文:[SQL Server]一次执行资料夹内的.sql 指令码 初始资料库时,我们Developers们会准备很多.sql指令码来建立资料表.检视甚至初始资料,那麽要怎麽一次执行资料夹内的*.sql ...

随机推荐

  1. 硬件(MAC)地址的概念及作用

    概念:MAC地址就是在媒体接入层上使用的地址,也叫物理地址.硬件地址或链路地址,其被固化在适配器的ROM中. 可见MAC地址实际上就是适配器地址或适配器标识符.当某台计算机使用某块适配器后,适配器上的 ...

  2. javascript跨浏览器事件对象类库

    一.前言 学习了javascript事件后,个人总结归纳了跨浏览器事件对象类库,方便以后使用,现分享给大家. 二.事件对象封装 将对浏览器事件对象的操作封装成eventObject.js方便调用 // ...

  3. HBase - Filter - 过滤器的介绍以及使用 | 那伊抹微笑

    博文作者:那伊抹微笑 csdn 博客地址:http://blog.csdn.net/u012185296 itdog8 地址链接 : http://www.itdog8.com/thread-214- ...

  4. Atitit. Toast alert loading js控件   atiToast v2新特性

    Atitit. Toast alert loading js控件   atiToast v2新特性 1. 连续多个txt追加的原理 var txt = document.createElement(& ...

  5. Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持

    Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致  推荐1 2. Apache 反向代理 推荐1 ...

  6. C# 获取或设置本地打印机及配置文件操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  7. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  8. hdu 4786 Fibonacci Tree(最小生成树)

    Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. Tree UVA - 548 已知中序遍历和后序遍历,求这颗二叉树。

    You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...

  10. Death to Binary? 分析模拟

    /** 题目:Death to Binary? 链接:https://vjudge.net/contest/154246#problem/T 题意:略. 思路: 注意事项: 给的字符串存在前导0: 存 ...