(4.16)sql server迁移DB文件(同一DB内)
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)迁移方案二(在线迁移)



--查看逻辑名
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内)的更多相关文章
- sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)
转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件 ...
- SQL Server 在缺少文件组的情况下如何还原数据库
SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为 ...
- 从 Microsoft SQL Server 迁移到 Oracle
来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...
- 从Microsoft SQL Server迁移到MySQL指南
转自 https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 由于 MySQL 将节约成本.自由选择平台.特性丰富等优 ...
- SQL Server 迁移数据库 (一)导入和导出
今天正好换服务器,记录一下迁移数据库的过程. 以前经常用备份还原法,今天试试‘SQL Server 2016 导入和导出数据’这个看怎么玩. 1. 建数据库结构 1.1 在需要迁移的数据库名字上右击, ...
- SQL Server里在文件组间如何移动数据?
平常我不知道被问了几次这样的问题:“SQL Server里在文件组间如何移动数据?“你意识到这个问题:你只有一个主文件组的默认配置,后来围观了“SQL Server里的文件和文件组”后,你知道,有多 ...
- SQL Server中数据库文件的存放方式,文件和文件组
原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html SQL Server中数据库文件的存放方式,文件和文件组 ...
- .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)
.NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...
- MS SQL Server迁移至Azure SQL(官方工具)
前面,我有尝试过将MS SQL Server数据数据迁移至Azure SQL,请参考<MS SQL Server迁移至Azure SQL>,使用的是第三方工具,但现在官方更新了工具,我们尝 ...
- [SQL Server]一次执行资料夹内的.sql 指令码
原文:[SQL Server]一次执行资料夹内的.sql 指令码 初始资料库时,我们Developers们会准备很多.sql指令码来建立资料表.检视甚至初始资料,那麽要怎麽一次执行资料夹内的*.sql ...
随机推荐
- 【精】iOS GCD 具体解释
一.介绍 1.什么是GCD? Grand Central Dispatch.是苹果公司开发的一套多核编程的底层API. GCD首次公布在Mac OS X 10.6,iOS4及以上也可用.GCD存在于l ...
- jQuery.Validate常用的一些规则
// 手机号码验证 jQuery.validator.addMethod("mobile", function(value, element) { var length = val ...
- gdb 详解
环境:gcc (OpenWrt/Linaro GCC 4.8) 以如下的简单代码为例,说明gdb的使用. void func1(int a, int b) { int c; c = a + b; } ...
- JavaScript之语句
ECMA-262 规定了一组语句(也称为流控制语句).从本质上看,语句定义了 ECMAScript 中的主要语法,语句通常使用一或多个关键字来完成给定任务. if语句 if语句是最常见的一种语句,语法 ...
- Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights
第一次提交遇到这样的情况,怎么回事呢,我在github上提交了ssh key 的啊. 排查先看看能不能解析, 1.先 ping https://github.com 把ip添加到 host : ...
- php windows 扩展redis
一:客户端安装redis (1)下载地址:https://github.com/dmajkic/redis/downloads 根据电脑是多少位的使用对应的文件,如我的是64bit,那么我就选择64b ...
- LOCAL_SHARED_LIBRARIES 与 LOCAL_LDLIBS,LOCAL_LDFLAGS的区别
LOCAL_LDLIBS :链接的库不产生依赖关系,一般用于不需要重新编译的库,如库不存在,则会报错找不到.且貌似只能链接那些存在于系统目录下本模块需要连接的库.如果某一个库既有动态库又有静态库,那么 ...
- java 调用cmd命令
public class Port{ public static void main(String[] args) { Runtime runtime=Runtime.getRuntime(); tr ...
- 现代 PHP 新特性系列
生成器的创建和使用 http://laravelacademy.org/post/4317.html
- MongoDB save()方法和insert()方法的区别
MongoDB save()方法和insert()方法的区别 首先看官方文档怎么说的 Updates an existing document or inserts a new document, d ...