SQL Server 移动系统数据库

说到这个问题,基本上有人就会想到三个问题:

1,什么是系统数据?

2,为什么要移动系统数据库?

3,移动系统数据库我们可以用附加和分离,为什么还要单独拿出来说呢?

对于这三个问题我一个一个讲吧,也算是自己做个笔记。

1,什么是系统数据?

所谓系统数据库就是我们在装SQL Server之后,系统自带的数据库(这样的回答是不是很白痴^_^).

如果你装SQL Server2005或2008在打开一个SQL实例后,就会看到一个数据库--->系统数据库文件夹,里边就是系统自带的数据库,如图:

对于每一个系统数据库,这里我先用简单的语言说一下:

1),master:

这个数据库是全局数据库,它包含一些系统表,权限分配,用户帐号设置,当前数据库配置信息以及关于磁盘空间,文件分配等信息。所以在执行诸如用户帐号设置,权限分配和改变系统配置信息后都要备份此数据。所以在这里强烈建议,不仅要经常备份自己的数据库,还有备份此数据库,虽然不像备份自己数据库那样那么频繁。至少半个月或一个月备份一次此数据库。
在这里还有专门的一个数据库大牛讨论过是否应该备份此数据库:SQL SERVER – Backup master Database Interval – master Database Best Practices

2),model:

这个数据库只是一个模板数据库,我们在创建任意的一个数据库的时候,都是复制此数据库为新数据库的基础,如果希望每一个新的数据库都含有某些对象或者权限,可以把这个对象或权限放在此数据库中,新创建的新数据库都会继承此数据的新对象或权限,并且拥有这些对象或权限。

3),msdb:

作者原话:SQL Server代理服务器会使用该数据库,它会执行一些列如备份和复制任务的计划好的活动。Service Borker也会用到该数据库,他为SQL Sever提供队列和可靠消息传递。当我们不在该数据库执行备份或维护任务时,通常可以忽略该数据库。在SQL Server2005之前,实际上是可以删除该数据库的,只后SQL Server仍然可用,但不能在维护任何备份历史了,并且不能够在定义任务,警告,工作或者建立复制,不过因为默认的msdb数据库非常小,建议即使用不到也不要删除它。

4),tempdb:

该数据库说白了,就是一个中转站或数据寄存站,用户显示创建的临时表,在查询处理和排序时内部所产生的中间结果的工作表,维护用的快照等,都会用到此数据库,与其他数据库所不同的是,在每次SQL Server实例重启之后,都会重建而不是恢复. 所以我们在其中创建的所有对象和权限在下次重启SQL Server时都会全部丢失。
但是我们也不能忽略此数据库,因为tempdb的大小和配置,对优化SQL Server的功能和性能来说很重要。
对tempdb数据库,还要多说几句,虽然在tempdb每次被重建时,它会从model数据库继承大多数的数据库选项,但是tempdb却不会从modeldb数据库中复制其恢复模式,因为它总是使用简单恢复模式。另外,tempdb是无法删除的,也不用备份。

2,为什么要移动系统数据库?

我们在安装SQL Server后默认的这些系统数据库都会放在C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA此文件夹下,一般的都不很大,为什么我们还有移动他们呢?
在没有实践管理服务器之前,我也没有这个想法,但是我发现我的服务器C盘一直都在增加,或者万一重装系统,我设置的数据库选项,以及用户账户设置都要重新设置,所以就有了这个想法。

还有一点就是作为重新布置计划或安排好的维护操作的一部分,我们也许需要移动系统数据库。

3,用附加和分离就可以,为什么还要单独说呢?

回答这个问题之前,我们在看一张图

注意到了吗,在我选中master系统数据库右击,选中任务后,并没有出现“分离”这个选项。那就说明移动这些系统数据库是和用户自定义的数据库是不同的。

移动tempdb,model和msdb的步骤和移动master数据库步骤稍微有点不同。

1),移动tempdb,model和msdb数据库

i),移动一个没有损坏的系统数据库
首先让我们用查询命令看一下SQL Server默认存储这些系统数据库的路径;查询命令:

SELECT name,physical_name AS CurrentLocation,state_desc
FROM sys.master_files

F5执行,显示如图:

之后开始我们的移动之旅吧!

a),对数据库中每个要移动的文件使用带有MODIFY FILE选项的ALTER DATABASE命令来指定新的文件夹选项。如:

--Move tempdb
ALTER DATABASE tempdb MODIFY FILE(NAME='tempdev',FILENAME='D:\Database\tempdb.mdf');
ALTER DATABASE tempdb MODIFY FILE(NAME = 'templog',FILENAME='D:\Database\templog.ldf');
--Move model
ALTER DATABASE model MODIFY FILE(NAME='modeldev',FILENAME='D:\Database\model.mdf');
ALTER DATABASE model MODIFY FILE(NAME='modellog',FILENAME='D:\Database\modellog.ldf');
--Move msdb
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBData',FILENAME='D:\Database\msdbdata.mdf');
ALTER DATABASE msdb MODIFY FILE(NAME='MSDBLog',FILENAME='D:\Database\msdb_log.ldf');

b),在命令提示行下用NET STOP MSSQLSERVER命令停止SQL Server实例;

c),物理移动文件到我们定义的文件夹,比如上面所述D:\Database文件夹;

d),重启SQL Server实例;

大功告成,然后在用上面的查询来验证更改,F5执行,显示如图:

ii),由于硬件故障而需要移动系统数据库

对于由于硬件故障而需要移动系统数据库,上面的方法就不行了,因为我们可能无法访问服务器来运行ALTER DATABASE命令。那我们就另外换一种解决方案!

a),如果SQL Server实例已经启动,那么停止该实例;

b),在命令提示行下,输入下面的命令把SQL Server实例启动到master-only恢复模式
NET START MSSQLSERVER /f /T3608

c),之后我们就能链接到服务器了,接下来就和上面”移动一个没有损坏的系统数据库 ”的步骤就一样了。

注:如果直接用NET START MSSSQL SERVER命令来启动SQL Server实例,会收到1814的错误提示。我们可以到“控制面板”-》“管理工具”-》“事件查看器”中看一下具体的错误日志。

2),移动master数据库

移动master数据库的位置和其他的系统数据库不同是,只能用SQL Server 配置管理器来更改master的位置。

首先打开SQL Server配置管理器,右击目标SQL Server实例,选择属性,然后点击高级标签,如图所示:

在启动参数中编辑各个参数的值来指向新的master数据库数据文件和日志文件的目录位置,如下:

d),D:\Database\master.mdf;
e),C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
f),D:\Database\mastlog.ldf

然后停止SQL Server实例,把物理文件移动到新的文件夹下,比如我移动到D:\Database\目录下;

最后启动SQL Server实例,就大功告成了!如果要检验一下,就用上面所提到的检验语句,F5执行,如图所示:

总结下来,如果重装系统,又不想丢失原先数据库设置的信息,大家可以学着移动一下系统数据库,但我们的小编觉得,移动不移动的另说,master表还是很有必要备份一下的。

(0)

相关推荐

  • SqlServer系统数据库的作用深入了解

    Master Master数据库保存有放在SQLSERVER实体上的所有数据库,它还是将引擎固定起来的粘合剂.由于如果不使用主数据库,SQLSERVER就不能启动,所以你必须要小心地管理好这个数据库.因此,对这个数据库进行常规备份是十分必要的. 这个数据库包括了诸如系统登录.配置设置.已连接的SERVER等信息,以及用于该实体的其他系统和用户数据库的一般信息.主数据库还存有扩展存储过程,它能够访问外部进程,从而让你能够与磁盘子系统和系统API调用等特性交互.这些过程一般都用像C++这样的现代编程

  • SQL Server数据库入门学习总结

    一图胜"十"言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识. 数据库基本是由表,关系,操作组成:对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数 存储过程 触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装.配置,服务器启动.停止,企业管理器.查询分

  • 快速实现SQL Server数据库恢复备份

    本文为大家分享了SQL Server数据库恢复备份的两种方法,供大家参考,具体内容如下 第一种方法:通常我们采用恢复备份的方式,选择目标数据库,选择源设备进行恢复. 截图如下: 第二种方法:这种方式有时候不太方便,而脚本方式将更方便,使用脚本方式如下. /* 备份数据DB 到.bak文件.然后利用此bak文件恢复一个新的数据库DBTest. */ USE master BACKUP DATABASE DB TO DISK = 'e:\DBTest.bak' RESTORE FILELISTONL

  • SQL Server 数据库分离与附加(图文教程)

    一.概述 SQL Server提供了"分离/附加"数据库."备份/还原"数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的"分离/附加"方法,类似于大家熟悉的"文件拷贝"方法,即把数据库文件(.MDF)和对应的日志文件(.LDF)拷贝到其它磁盘上作备份,然后把这两个文件再拷贝到任何需要这个数据库的系统之中.比如,在实验教学过程中,同学们常常想把自己在学校实验室计算机中创建的数据库搬迁到自己的计算机中而不想

  • SQL Server 移动系统数据库

    说到这个问题,基本上有人就会想到三个问题: 1,什么是系统数据? 2,为什么要移动系统数据库? 3,移动系统数据库我们可以用附加和分离,为什么还要单独拿出来说呢? 对于这三个问题我一个一个讲吧,也算是自己做个笔记. 1,什么是系统数据? 所谓系统数据库就是我们在装SQL Server之后,系统自带的数据库(这样的回答是不是很白痴^_^). 如果你装SQL Server2005或2008在打开一个SQL实例后,就会看到一个数据库--->系统数据库文件夹,里边就是系统自带的数据库,如图: 对于每一个

  • SQL Server 2008 R2数据库镜像部署图文教程

    概述 "数据库镜像"是一种针对数据库高可用性的基于软件的解决方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在同一时刻,其中一台上的数据库用于客户端访问,充当"主体服务器"角色:而另一台则根据镜像会话的配置和状态,充当热备份服务器,即"镜像服务器角色",这两种角色不是绝对的. 优点 l 增强了数据保护功能 l 提高了数据库的可用性 l 提高了生产数据库在升级

  • SQL Server 2005附加数据库时Read-Only错误的解决方案

    SQL Server 2005附加数据库文件时出现了Read-Only错误,附加的时候,系统提示mdf文件为只读,可是打开文件属性,这个属性不为只读.该怎么解决呢?本文我们就介绍了这一解决方案,接下来就让我们来一起了解一下吧. 两种解决方法如下: 1.重新打开数据库软件,在登录认证框那里选择:Windows authentication进行登录.然后再附加数据库,这时附加的就没有Read-Only了. 2.在*.mdf文件的属性里,找到"安全"页,然后把里面所有的"组或用户名

  • PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结

    本文实例讲述了PHP5.6.8连接SQL Server 2008 R2数据库常用技巧.分享给大家供大家参考,具体如下: 用到的工具: 1.JetBrains PhpStorm (编写php代码工具) 2.SQL Server 2008 R2(数据库) 3.PHP 5.6.X (x86 源于Apache XAMPP 集成) 先了解一下PHP是多少位的及其一些相关线程是否安全的信息. 在PhpStorm新建一个PHP文件里面内容为 <?php /** * Created by PhpStorm. *

  • 让Django支持Sql Server作后端数据库的方法

    好久木有在windows里面写python了..这本也不是事儿,python嘛,只要系统里面装好了,那大多数代码都是可以正常运行的..然而有时候需要调用微软那一套特定的API,什么Java啊python啊总有水土不服的时候. 今天我就将我在Mac里面写好的Django项目移到win10上.一开始图省事儿,我用的sqlite3当后端数据库,但单位要求在项目正式上线的时候用SQL Server,于是,记得django 1.9默认不支持微软那一套的我,就开始在网上搜啊搜,现是发现有人说只要装好一个名为

  • SQL Server 2005恢复数据库详细图文教程

    不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文安装教程,超详细 下面是SQL Server 2005恢复数据库的详细过程 1:打开SQL Server Management Studio并登录,这个一般在开始--程序里面找到 2:鼠标右键单击数据库--新建数据库 3:弹出来的框里,填写数据库名称,我这里填写的是sqlqtdy,这个根据自己需求来

  • SQL Server 2008 备份数据库、还原数据库的方法

    SQL Server 2008 备份数据库: 1.打开SQL , 找到要备份的数据库 , 右键 >> 任务 >>备份 2.弹出 [ 备份数据库对话框 ] ,如图: 3.点击添加 [ 按钮 ] . 如下图: 4.选择要备份的路径 和 备份的文件名 点击 [ 确定 ]. 5.然后就一直点击确定就可以了 . 然后我们来到D:\ 看看 6.这个时候 , 你可以把它压缩打包什么的 , 要用的时候 , 在文件后面加 .bak 后缀 就可以用SQL 来还原了,还原可以来看这里~ SQL Serv

  • 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句写法

    今天在写程序的时候,需要生成从开始id到结束id的sql语句.原来不需要这个功能现在就需要了. 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写? 如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写? ------解决方案-------------------- select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc

  • 解析SQL Server 视图、数据库快照

    简介数据库快照 数据库快照,正如其名称所示那样,是数据库在某一时间点的视图.是SQL Server在2005之后的版本引入的特性.快照的应用场景比较多,但快照设计最开始的目的是为了报表服务.比如我需要出2011的资产负债表,这需要数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点.快照还可以和镜像结合来达到读写分离的目的.下面我们来看什么是快照. 什么是快照 数据库快照是 SQL Server 数据库(源数据库)的只读静态视图.换句话说,快照可以理解为一个只读的数据库.利用快

  • SQL Server 2005 开启数据库远程连接的方法

    SQL Server 2005默认是不允许远程连接的,要想通过远程连接实现MSSQL,数据库备份,需要做如下设置: 步骤/方法 1.打开SQL Server Configuration Manager,使用windows身份登录 2.登录后,右键选择"属性".左侧选择"安全性",选中右侧的"SQLServer,和 Windows 身份验证模式"以启用混合登录模式 3.选择"连接",勾选"允许远程连接此服务器"

随机推荐