zoukankan      html  css  js  c++  java
  • 还原数据库相关,孤立用户无法删除,又无法与新建的同名登陆挂钩的解决办法(转)

    如何将数据库还原至任意位置

    1、执行

    restore filelistonly FROM disk='E:\ChinaValue_db_200612250200.BAK'

    获得当前备份文件的逻辑名

    2、使用windows账户或者sa登陆执行以下SQL语句:

    restore DATABASE [ChinaValue]
    FROM disk='E:\ChinaValue_db_200612250200.BAK'
    WITH
    file=1,
    move
    'ChinaValueTemp' TO 'F:\Server\SqlData\MSSQL\Data\ChinaValueTemp_Data.MDF',
    move
    'ChinaValueTemp_Log' TO 'F:\Server\SqlData\MSSQL\Data\ChinaValueTemp_Log.LDF'
    restore DATABASE [还原目的数据库]
    FROM disk='E:\ChinaValue_db_200612250200.BAK' --备份文件的路径
    WITH
    file=1, --文件的编号
    move 'ChinaValueTemp' TO 'F:\Server\SqlData\MSSQL\Data\ChinaValueTemp_Data.MDF', --数据库逻辑名 to 还原到的物理文件名
    move 'ChinaValueTemp_Log' TO 'F:\Server\SqlData\MSSQL\Data\ChinaValueTemp_Log.LDF' --日志逻辑名 to 还原到的物理文件名

    还原数据库后,孤立用户无法删除,又无法与新建的同名登陆挂钩的解决办法

    --首先创建存储过程
    CREATE proc p_validatelogin
    @dbname sysname,--孤立用户所在的数据库名
    @loginame sysname--孤立用户名
    AS
    IF db_id(@dbname) IS NULL
    begin
    print '无此数据库'
    RETURN
    end
    declare @s nvarchar(4000),@sid BINARY(16)
    IF EXISTS(SELECT * FROM master..sysxlogins WHERE name=@loginame)
    begin--如果已经有该登录,则直接修改系统表
    exec sp_configure 'allow updates',1 reconfigure WITH override
    SELECT @sid=sid FROM master..syslogins WHERE name=@loginame
    SET @s='update ['+REPLACE(@dbname,']',']]')
    +']..sysusers set sid=@sid where name=@loginame and islogin=1'
    exec sp_executesql @s
    ,N
    '@sid binary(16),@loginame sysname'
    ,
    @sid,@loginame
    exec sp_configure 'allow updates',0 reconfigure WITH override
    end
    else
    begin--如果没有该登录,则创建登录
    SET @s='SELECT @sid=sid FROM ['+REPLACE(@dbname,']',']]')
    +']..sysusers WHERE islogin=1 and name=@loginame'
    exec sp_executesql @s
    ,N
    '@sid binary(16) out,@loginame sysname'
    ,
    @sid out,@loginame
    exec sp_addlogin @loginame=@loginame,@sid=@sid
    end
    go

    --执行存储过程
    exec p_validatelogin 'ChinaValueBbs','chinavaluebbs'

    go

    --执行重新配置
    RECONFIGURE
  • 相关阅读:
    OpenFace 调试记录
    Q-Q图和P-P图
    混沌理论(Chaos theory)和非线性系统
    vxlan 协议
    浮动IP地址(Float IP)与 ARP欺骗技术
    Huawei® ENSP & VRP CheatSheet
    多分类问题中查全率和查准率的理解
    urllib 报错 IOError: [Errno socket error] TLS/SSL connection has been closed (EOF) (_ssl.c:590)
    小世界网络
    表型数据(Phenotype Data)基本概念
  • 原文地址:https://www.cnblogs.com/sdytzz/p/2451299.html
Copyright © 2011-2022 走看看