zoukankan      html  css  js  c++  java
  • 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 '对应的数据库'

  • 相关阅读:
    【简单易懂】JPA概念解析:CascadeType(各种级联操作)详解
    [转] @JoinColumn 详解 (javax.persistence.JoinColumn)
    Feign二: @FeignClient 接口调用
    @Basic表示一个简单的属性 懒加载,急加载
    RPC接口测试(一)什么是 RPC 框架
    Mysql中 查询慢的 Sql语句的记录查找
    Mysql 查看连接数,状态 最大并发数
    ntp时间一致对与设备心跳的影响
    jmeter常用四种断言
    jmeter BeanShell断言(四)
  • 原文地址:https://www.cnblogs.com/wanglg/p/4004988.html
Copyright © 2011-2022 走看看