Sqlserver 还原那些事
由于想总结的东西比较杂乱,就起了这么一个题目
1.当还原数据库,没有选择结尾日志备份时,会出现下图异常:

这是因为,对于使用完全恢复模式或大容量日志恢复模式的数据库,在大多数情况下,您必须在还原数据库前备份日志的结尾。如果想不抛出这个错误
就需要选择 覆盖现有数据库(With Replace)。
使用 REPLACE 选项后,就会忽略还原时通常执行的几项重要安全检查。 忽略的检查如下:
一 还原时使用其他数据库的备份覆盖现有数据库。使用 REPLACE 选项后,即使指定的数据库名称与备份集中记录的数据库名称不同,
还原也允许您使用备份集中任何一个数据库覆盖现有数据库。这会导致一个数据库意外覆盖另一个数据库。
二 在没有获取结尾日志备份并也没有使用 STOPAT 选项的情况下,使用完整恢复模式或大容量日志恢复模式对数据库进行还原。
使用 REPLACE 选项后,由于没有备份最近写入的日志,您会丢失提交的作业。
三 覆盖现有文件。
例如,可能会错误地覆盖错误类型的文件,如 .xls 文件或非联机状态的其他数据库正在使用的文件等。 如果覆盖现有文件,则即使所还原的数据库是完整的,也有可能丢失某些数据。
2.如果选择 限制访问还原的数据库(With Restricted_User)
那么还原以后数据库将会是受限制访问的状态

那么这个受限制用户是什么概念呢?
在RESTRICTED_USER模式下的数据库只接受合格的用户连接——这些用户属于dbcreator或sysadmin角色,或者是那个数据库的db_owner角色的成员。
只有当用户满足以上角色中的一种时,才能够访问这个数据库。
用户访问状态:有三个选项,他们是相互排斥的。
SINGLE_USER, RESTRICTED_USER, MUTLI_USER
默认时处于MULTI_USER模式下,这种模式下不受限制,可以多用户同时使用数据库。
那么SINGLE_USER起到什么作用呢,
一个在单用户(SINGLE_USER)模式下的数据库一次只能有一个连接,如果这个数据库已经被只用了一次,
任何用户(包括正在使用的这个用户)再建立新连接的时候都有抛出异常:数据库 'xxxxxxx' 已打开,并且一次只能有一个用户访问。
如果我们设置单用户模式后,打开后的连接丢失了,我们该如何再还原成多用户模式呢?
我们需要执行以下的脚本
USE [master]
GO
/****** Object: StoredProcedure [dbo].[killspid] Script Date: 03/28/2011 11:01:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--建一个存储过程,断开所有用户连接。
create proc [dbo].[killspid] (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status<>-1
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
GO
use master
exec killspid '对应的数据库'
Sqlserver 还原那些事的更多相关文章
- SqlServer还原步骤
SqlServer还原步骤 2009-09-05 10:32:12| 分类: 数据库|字号 订阅 1 . 删除原有数据库 新建数据库 hywlxt 2. 在master 中新建存储过程 k ...
- sqlserver还原数据库
该方法只针对同等级数据库,不能跨级 比如sqlserver2012还原到sqlserver2008会报错 用数据库日志文件对数据库进行还原一 将日志文件.mdf文件和.ldf文件copy放置在sq ...
- sqlserver还原差异备份
因为之前遇到还原差异备份,最开始遇到SQLServer报错:"无法还原日志备份或差异备份,因为没有文件可用于前滚".查阅很多资料后,终于得到解决.收集整理成这篇随笔. 问题原因:出 ...
- SqlServer 还原他服数据库只建立发布却删除不了
本想做测试,从另一台服务器备份数据库还原到本机. 创建了一个发布,却删除不了,提示如下图: 参考论坛:http://bbs.csdn.net/topics/300046417 发现是数据库所有者问题, ...
- sqlserver 还原数据库
1.解决什么问题? a.还原数据库的时候老是提示 不能独占 2.解决方案 ALTER DATABASE [ datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE ...
- Sqlserver 角色那些事
固定服务器角色 描述 sysadmin 可以在SQLServer 中执行任何活动. serveradmin 可以设置服务器范围的配置选项,关闭服务器. setupadmin 可以管理链接服务器和启动过 ...
- SqlServer 还原,备份 Sql脚本命令
备份 USE master go ),); set @path='d:\backup\'; set @name=@path+'TsDb.bak'; Backup database TsDb To di ...
- 解决sqlserver还原数据库失败命令
1.使用Master数据库 2.选择数据库 select * from master.sys.sysprocesses where dbid=db_id('database') 3.查出进程使用kil ...
- MS SqlServer还原数据库,出现媒体簇的结构不正确
出现此问题,是数据库版本过低导致,只要保证连接实例所在的版本号>=要还原的数据库的版本号,即可还原成功. 可以使用select @@VERSION,查看当前实例版本.
随机推荐
- js 数组 转
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- RHEL 5 安装phpqrcode生成二维码
VMWARE中全新安装(默认)RHEL. 之后,yum 安装备apache/php 下载并上传phpqrcode 1.1.4版本,并将其解压至/var/www/html/phpqrcode (去掉ip ...
- 1.精通前端系列技术之js正则表达式
在不会正则的时候,我们寻找字符串某些规律或者截取部分特殊字符的时候,我们需要写很多行代码来获取我们想要的字符串,在使用正则之后,代码量会大量简洁很多 1.字符串的比较,判断是否数字类型的字符串,我们用 ...
- ROS语音识别
一.语音识别包 1.安装 安装很简单,直接使用ubuntu命令即可,首先安装依赖库: $ sudo apt-get install gstreamer0.10-pocketsphinx ...
- WebBrowers & HtmlViewers collection
WebBrowers & HtmlViewers collection 浏览: 加入我的收藏 楼主: THtmlViewerhttps://github.com/BerndGabriel/Ht ...
- fqrouter让安卓手机登陆facebook成为可能
大多数人向来都是在电脑上通过各种代理工具来访问一些国外网站,例如facebook,twitter,然而你是否想过可以通过你的手机来畅游这些网站呢,接下来我将介绍一种通过fqrouer实现使用安卓手机畅 ...
- DB2配置信息查看及其更新命令
获取DB2配置信息 db2 get dbm cfg 更新DB2链接配置信息 db2 update dbm cfg using authentication server db2stop db2star ...
- Problem C HDU 5224
Description There is a piece of paper in front of Tom, its length and width are integer. Tom knows t ...
- c#读取文本文档实践1-File.ReadAllLines()
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- 数组的filter方法
filter()函数用于过滤序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素. eg: var arr=[10,11,12,13,14 ...