和单用户方式,数据库的备份和死灰复燃

1,备份master数据库

在SQL Server 中,master 数据库记录系统级其余元数据,例如,logon
accounts, endpoints, linked servers, and system configuration
settings,同时,master
数据库记录其余数据库及其文件的岗位,因而,在开行SQL
Server实例时,master数据库必须首先启动。master
数据库是那样紧要,必须频繁地备份master数据库。Only full database backups
of master can be created.

在SQL Server 中,master 数据库记录系统级其他元数据,例如,logon
accounts, endpoints, linked servers, and system configuration
settings,同时,master
数据库记录其余数据库及其文件的地点,因而,在开行SQL
Server实例时,master数据库必须首先启动。master
数据库是这般重大,必须频仍地备份master数据库。Only full database backups
of master can be created.

数据库运维人士,在维护数据库时,有时会赶上有的尤其的意况,例如,SQL
Server实例无法访问,此时需求用到管理员在紧迫情况下专用的连日;有时,在做一些连串级其他布局修改时,当前数据库不只怕被其他用户访问,必须把数据库切换来单用户格局。常备不懈,在系统正常运转时,多做一些彩排,幸免在真正出现相当时,手忙脚乱。先解释一下五个术语:

997755.com澳门葡京 1

一,备份master数据库

一,备份master数据库

专用管理总是(Dedicated Administrator
Connection, DAC)是SQL
Server提供的一个卓殊的诊断连接,用于连接数据实施诊断查询和故障排除,当其他任何措施都爱莫能助连接不到SQL
Server时,DAC是绝无仅有的法子。不是独具的Login都可以使用DAC,唯有sysadmin
服务器剧中人物的分子,才得以利用DAC。各个SQL
Server实例,只能够有一个DAC连接。就算当前早已有一个DAC连接,SQL
Server抛出荒唐 17810。

 

master数据库只好做full
backup,无法做差距备份和事务日志备份,原因是master只好处于Recovered
状态,无法处于NoRecovery(recovering)状态。

master数据库只好做full
backup,不只怕做差别备份和事务日志备份,原因是master只可以处于Recovered
状态,不可以处于NoRecovery(recovering)状态。

单用户形式( Single-User mode),是指只同意一个用户连接到SQL
Server实例或数据库,平日景况下,单用户格局用于修复系统数据库等保险操作,例如,还原master数据库,修改实例级其余安排选项。

2,截至服务,直接删除master数据文件

backup database [master]
to disk = 'D:\TestDBBackupFolder\master_1.bak' --specify new backup file
with
compression,
format,
init,
skip,
stats=5
backup database [master]
to disk = 'D:\TestDBBackupFolder\master_1.bak' --specify new backup file
with
compression,
format,
init,
skip,
stats=5

一,连接DAC

997755.com澳门葡京 2

二,还原master数据库

和单用户方式,数据库的备份和死灰复燃。二,还原master数据库

一般性状态下,DBA通过sqlcmd 命令行工具访问SQL Server,登陆到SQL
Server实例所在的主机(Host),以Administrator身份运行DOS界面,输入指令:sqlcmd
-A,参数-A指定的是Administrator选项。

 

master数据库必须在单用户方式下还原,因而,在还原master数据此前,必须先为止SQL
Server的富有服务(Service),包含MSSQLServer、Agent、Broser、Fulltext等,幸免其竞争访问MSSQLService,然后,以管理人打开命令行;

master数据库必须在单用户格局下还原,因而,在还原master数据从前,必须先截止SQL
Server的保有服务(Service),包罗MSSQLServer、Agent、Broser、Fulltext等,幸免其竞争访问MSSQL瑟维斯,然后,以管理人打开命令行;

997755.com澳门葡京 3

997755.com澳门葡京 4

step1,使用命令行net start,以single user 情势启动SQL
Server实例的瑟维斯:MSSQLServer

step1,使用命令行net start,以single user 形式启动SQL
Server实例的瑟维斯:MSSQLServer

暗中同意情形下,DAC尝试去老是跟Login关联的默许的数据库,如果暗许的数据库离线,或不足访问,DAC连接抛出错误
4060,可以利用 -d
参数指定登陆的数据库,推荐登陆master数据库,因为,一旦SQL
Server实例启动成功,那么master数据库必定处于在线和可访问状态,sqlcmd
命令行代码如下:

 

参数/m“sqlcmd”:表示以单用户(Single
User)格局启动瑟维斯,并且,只同意sqlcmd客户端访问service;

参数/m“sqlcmd”:表示以单用户(Single
User)情势启动Service,并且,只允许sqlcmd客户端访问service;

sqlcmd –A –d master

3,用安装程序重建master数据文件

net start MSSQLSERVER /m"sqlcmd"
net start MSSQLSERVER /m"sqlcmd"

sqlcmd的参数是大大小小写敏感的,常用参数是:

  控制台下进入安装目录就不说了

step2,使用sqlcmd登录到SQL Server实例

step2,使用sqlcmd登录到SQL Server实例

sqlcmd 
-S [protocol:]server[\instance_name][,port]
-E (use trusted connection)
-U login_id
-P password
-d db_name
-A (dedicated administrator connection)
-q "cmdline query"
-Q "cmdline query" (and exit)

  D:\SetUp\sqlserver2012>Setup /QUIET /ACTION=REBUILDDATABASE
/INSTANCENAME=sqlserver2012     /SQLSYSADMINACCOUNTS=UserName
/SAPWD= ***

-E:指定sqlcmd以信任连接(trusted
connection)方式登录Service,参数-E是专断认同的;

-E:指定sqlcmd以信任连接(trusted
connection)格局登录Service,参数-E是默许的;

二,单用户方式( Single-User mode)

997755.com澳门葡京 5

-S:指定sqlcmd连接的Server-Name

-S:指定sqlcmd连接的Server-Name

SQL Server支持二种启用单用户方式的法子:在开行SQL
Server实例时进入单用户方式,在SQL
Server实例运行时把数据库切换到单用户格局,前者是SQL
Server实例级别,后者是数据库级别。

 

sqlcmd -E -S server-name
sqlcmd -E -S server-name

1,启动参数(startup option)

4,单用户情势启动SQL Server 服务,利用备份文件还原

step3,使用sqlcmd还原master数据库,由于SQL
Server实例中已经存在master数据库,必须指定replace选项,将原始的master数据库替换掉;

step3,使用sqlcmd还原master数据库,由于SQL
Server实例中已经存在master数据库,必须指定replace选项,将原始的master数据库替换掉;

起始参数用于在SQL Server
实例启动时,指定实例级其余选项,暗中认同的启航参数是:

 单用户情势启动  :net start mssql$sqlserver2012 /m

restore database master
from disk='D:\DBBackup\master.bak'
with replace;
go
restore database master
from disk='D:\DBBackup\master.bak'
with replace;
go
  • -d master_file_path  :用于指定master数据库的数据文件路径
  • -l master_log_path   :用于指定master数据库的日志文件路径
  • -e error_log_path     :用于指定存储错误日志的的文书路径

 sqlcmd情势连接  :sqlcmd -S “ServerName\InstanceName”

master数据复苏达成今后,启动SQL Server实例的瑟维斯,就足以健康访问SQL
Server实例。

master数据復苏完成未来,启动SQL Server实例的瑟维斯,就足以健康访问SQL
Server实例。

这几个默许参数是在设置SQL Server时,系统自动指定的,DBA能够透过SQL Server
配置管理器(SQL Server Configuration Manager)查看和布局 Startup
Parameters,如下图所示,通过Add按钮扩展启动参数,通过Remove删除启动参数:

997755.com澳门葡京 6

 

 

997755.com澳门葡京 7

 

参考文档:

参考文档:

2,使用启动参数启用单用户形式

即使有master文件自身并未损坏,有master的备份,只须求步骤4还原master即可

SqlServer系统数据库还原(三)系统数据库master-msdb-model
还原模拟测试

SqlServer系统数据库还原(三)系统数据库master-msdb-model
还原模拟测试

参数 -m ,以单用户方式初始SQL
Server实例。使用该选项,当DBA以-m参数启动SQL
Server实例时,DBA却无计可施登陆SQL
Server实例,一个无人问津的客户端应用程序已经占据了唯一的连天,SQL
Server实例抛出的不行是:当前已经有用户登陆,

 

master
Database.aspx)

master
Database.aspx)

参数 -mClientApplicationName
可以指定允许登陆的客户端应用程序,ClientApplicationName是深浅写敏感的。

5,重启数据库服务,之后方可健康访问

Restore the master Database
(Transact-SQL).aspx)

Restore the master Database
(Transact-SQL).aspx)

譬如, 参数 -mSQLCMD 指定连接到SQL Server实例的延续必须是sqlcmd
客户端程序,参数 -m”Microsoft SQL Server Management Studio – Query”
指定连接到SQL Server实例的连日必须是SSMS。

  997755.com澳门葡京 8

Start SQL Server in Single-User
Mode.aspx)

Start SQL Server in Single-User
Mode.aspx)

3,在SQL Server实例运行时,把数据库切换来单用户格局

sqlcmd
Utility.aspx)

sqlcmd
Utility.aspx)

在装置数据库进入单用户方式(SINGLE_USER)时,确保数据库选项 AUTO_UPDATE_STATISTICS_ASYNC
被装置未OFF,这是一个后台进度,用于创新数据库的统计新闻,当该接纳被安装未ON,该后台进度会占据数据库的绝无仅有的连日,那样,其余用户无法访问到多少,使用如下脚本禁用 AUTO_UPDATE_STATISTICS_ASYNC选项:

Use the sqlcmd
Utility.aspx)

Use the sqlcmd
Utility.aspx)

ALTER DATABASE database_name 
SET AUTO_UPDATE_STATISTICS_ASYNC OFF;

当把数据库切换到单用户方式时,假若其余用户已经一而再到数据库,那么,该连接将会被关门,SQL
Server也不会提供任何警示。在切换来单用户模式时,常常会采用 WITH ROLLBACK
IMMEDIATE
选项,那会造成未到位的业务马上回滚,并马上把其余连接断开。命令执行到位之后,数据库切换来单用户方式,等到维护操作甘休之后,用户能够在现阶段的总是中执行命令,把数据库切换到多用户格局(MULTI_USER),那样其余用户可以正常连接到数据库。

USE master;
GO
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;
GO

四,登陆触发器(Logon Trigger)

登陆触发器有时会阻碍所有用户访问数据库,包蕴sysadmin角色的积极分子,当无法连接到SQL
Server实例时,使用DAC是唯一的路线,DBA只好动用DAC登陆到数据库,删除登陆触发器,把数据库苏醒到正规访问状态。

Step1:使用DAC连接受数据库,以管理员身份(Run as
Administrator)启动DOS界面,使用sqlcmd连接DAC:

sqlcmd -A

Step2:删除登陆触发器,在命令行中输入以下命令,输入go
(batch分隔符),执行命令,删除登陆触发器

drop trigger login_trigger_name
on all server;
go

 

参考文档:

sqlcmd
Utility997755.com澳门葡京 ,.aspx)

Diagnostic Connection for Database
Administrators.aspx)

Database Engine Service Startup
Options

Start SQL Server in Single-User
Mode

Set a Database to Single-user
Mode

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website