SQL Server数据库分离和附加数据库的操作步骤
作者:菇毒 发布时间:2024-01-27 19:59:23
1. 概述
若要将数据库移动或更改到同一计算机的不同 SQL Server 实例,分离和附加数据库会很有用;用户可以分离数据库的数据和事务日志文件,再将它们重新附加到同一或其他 SQL Server 实例中;
在 64 位和 32 为环境中,SQL Server 磁盘存储格式均相同,所以,能将 32 位环境中的数据库附加到 64 位环境中,反过来也行;
从运行在某个环境中的服务器实例上分离的数据库可以附加到运行在另一个环境的服务器实例;
注意: 不要从未知或不可信源附加或还原数据库;此类数据库可能包含执行非预期 T-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误;在使用未知源或不可信源中的数据库之前,在非生产服务器中对数据库运行 DBCC CHECKDB,同时检查数据库中的代码;
2. 分离数据库
分离数据库 指从 SQL Server 实例中删除,但使数据库在其数据文件和事物日志文件保持不变;之后,就能使用这些文件将数据库附加到任何 SQL Server 实例,包括分离该数据库的服务器;
若存在以下任何情况,就不能分离数据库;
已复制并发布的数据库;若进行复制,数据库就必须是未发布的,必须通过运行 sp_replicationdboption 禁用发布后,才能分离数据库;
数据库中存在数据库快照,必须先删除所有数据库快照,才能分离数据库;
该数据库正在某个数据库镜像会话中进行镜像,不终止该会话,就不能分离该数据库;
数据库处于可疑状态;
该数据库是系统数据库;
2.1 分离数据库的步骤
在 SSMS 对象资源管理器中连接到 SQL Server 数据库引擎的实例,展开该实例;
展开数据库,选择要分离的用户数据库名称;
右击数据库 → 任务 → 分离;
4.分离数据库对话框,确定;
3. 附加数据库
通过 SSMS ,用户同样能附加复制的或分离的 SQL Server 数据库;
注意: 附加数据库时,该数据库必须已分离且所有数据文件(MDF 文件或 NDF 文件)都必须可用;
附加日志文件的要求在某些方面取决于是读写还是只读的;
若读写数据库具有单个日志文件,且没有为该日志文件指定新位置,附加操作将在旧位置中查找该文件;
若找到了该就日志文件,无论数据库上次是否完全关闭,都会使用该文件;但是,若未找到旧文件日志,数据库上次是完全关闭且现在没有活动日志链,则附加操作将尝试为数据创建新的日志文件;
反之,若附加的主数据文件是只读的,则数据库引擎假定该数据库也是只读的;对于只读数据库,日志文件在数据库中指定的位置上必须可用;
从上述内容能看出,用户尝试附加 SQL Server 数据库前,必须具备一定的先决条件,如下所示:
必须先分离数据库,任何尝试附加未分离的数据库都将返回错误;
附加数据库时,所有数据文件(MDF 文件和 LDF 文件)都必须可用;若任何数据文件路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径;
在附加数据库时,若 MDF 和 LDF 文件位于不同目录且其中一条路径包含 \?\GlobalRoot,该操作将失败;
3.1 附加数据的操作步骤
附加数据库到指定目标上,操作步骤如下:
1.右击数据库 → 附加;
2.附加数据库对话框中,若要指定要附加的数据库,可单击添加,在定位数据库文件中选择数据库所在的磁盘驱动器并展开目录,以查找并选择数据的**.mdf** 数据库文件;
总结
来源:https://blog.csdn.net/weixin_43960383/article/details/124086987


猜你喜欢
- 今天在论坛上面看到有些兄弟不知道HTC是什么东西。小生在这里稍微说一下。从5.5版本开始,Internet Explorer(IE)开始支持
- 本文介绍了三种跨域访问的方法,php,asp及jsp种访问远程文件的方法。这几天脑细胞剩下的不多了,不过问题都一个个解决了。我希望搜索引擎能
- MySQL授权命令grant的使用方法:本文实例,运行于 MySQL 5.0 及以上版本。MySQL 赋予用户权限命令的简单格式可概括为:g
- Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据#!/usr/bin/e
- 介绍使用subprocess模块的目的是用于替换os.system等一些旧的模块和方法。运行python的时候,我们都是在创建并运行一个进程
- 双向绑定Vue 的双向绑定是通过数据劫持和发布-订阅模式实现的。当 Vue 实例初始化时,它会对 data 选项中的每个属性使用 Objec
- 代码和代码运行的结果:代码:import itertools as itswords="rot123"a=its.pro
- 函数带括号和不带括号的区别1、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成2、带括号(此
- go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module
- 在plugin/tagbar.vim里面的键映射改成: \ ['nexttag', '<
- 本文实例讲述了mysql 复制原理与实践应用。分享给大家供大家参考,具体如下:复制功能是将一个mysql数据库上的数据复到一个或多个mysq
- 一、前言最近趁空闲之余,在对MySQL数据库进行插入数据测试,对于如何快速插入数据的操作无从下手,在仅1W数据量的情况下,竟花费接近47s,
- js代码如下: <script type="text/javascript"> //禁用右键菜单 docum
- 1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表
- 一般我们能过VS2005的SQL explorer来添加一个本地的MDF文件。也许你可能会出现下面这个问题:Exception Detail
- 在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线、圆、椭圆等。在skimage中,霍夫变换是放在tranform模块内,本篇主
- 掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的资源浪费。1、使用局部变量尽量使用局部变量代替全局变量:便于维护,提高性能并
- 本文实例讲述了Python最长公共子串算法。分享给大家供大家参考。具体如下:#!/usr/bin/env python # find an
- 关于Event:mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与l
- RSS 是一个可用多种扩展来表示的缩写:“RDF 站点摘要(RDF Site Summary)”、“真正简单的辛迪加(Really Simp