AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 282841
Accepted
PeterJL
PeterJL
Asked: 2021-01-09 09:01:03 +0800 CST2021-01-09 09:01:03 +0800 CST 2021-01-09 09:01:03 +0800 CST

在 SYBASE ASE 16 中将登录名映射到已还原数据库中的用户

  • 772

从其他环境恢复数据库后,有一种方法可以将数据库中的用户映射到服务器中的登录名。我可以删除并重新创建或别名,但在MS SQL Server中有一种方法:

EXEC sp_change_users_login 'Auto_Fix', 'user'

我在SYBASE ASE 16中寻找类似的东西

sybase sybase-ase
  • 1 1 个回答
  • 740 Views

1 个回答

  • Voted
  1. Best Answer
    markp-fuso
    2021-01-09T16:56:50+08:002021-01-09T16:56:50+08:00

    Sybase (ASE) 不提供在用户数据库和主数据库之间同步系统表的任何方法。在从不同的数据服务器加载数据库(或在本地数据服务器的登录名/角色/用户/别名已(大量)修改后加载旧的数据库转储)之后,由 DBA/dbo 手动修复此问题。

    您需要考虑几个问题:

    • 用户映射到错误的登录名(需要重新映射suid)
    • 没有登录的用户映射到(需要删除)
    • (db) 角色映射到错误的 (srvr) 角色(需要重新映射id)
    • (db) 没有要映射到 (srvr) 角色的角色(需要删除)
    • 映射到错误登录名的别名(更容易删除和重新运行sp_addalias)
    • 没有登录名的别名映射到(需要删除)
    • 没有关联的被授予者/授予者的权限(在清理 sysusers/sysalternates/sysroles 之后)

    假设您正在寻找有关如何进行修补的输入/建议sysusers...


    不要在没有先执行这些操作:

    • 在测试数据库中测试/验证
    • 确保所有更改都在 a 内执行,transaction并且在发布 a 之前对所述更改进行了双重检查/验证commit tran

    任何进行以下步骤的人应对任何不良后果负全部责任!!


    注意:sysusers包含有关用户、组和角色的数据;以下适用于用户的条目。

    假设:

    • db 用户名与关联的登录名相同(即,sysusers.name应该匹配syslogins.name)
    • 如果登录名已映射到具有不同名称的用户(故意)......以下将不起作用;DBA 需要有一个主列表,列出应该将哪些登录名映射到哪些用户

    修补用户条目涉及的一般步骤sysusers:

    -- mismatched sysusers entries
    
    select  suid,suser_name(suid),name
    from    sysusers
    where   suid > 1
    and     isnull(suser_name(suid),'DOESNOTEXIST') != name
    and     name not in ('dbo','guest','probe','usedb_user')  # operator should review and update this list as necessary
    go
    
    -- assuming sysusers needs to be patched ...
    
    -- enable updates of system tables
    
    exec sp_configure 'allow updates to system tables',1
    go
        
    -- perform all updates inside a transaction !!!
    
    begin tran
    go
    
    -- update sysusers based on sysusers.name = syslogins.name
    
    update  sysusers
    set     suid = suser_id(name)
    where   suid            > 1
    and     name            not in ('dbo','guest','probe','usedb_user')
    and     suser_id(name)  != suid
    and     suser_id(name)  is not NULL
    go
    
    -- delete sysusers where there is no syslogins.name = sysusers.name
    
    delete  sysusers
    where   suid            > 1
    and     name            not in ('dbo','guest','probe','usedb_user')
    and     suser_id(name)  is NULL
    
    /* if any errors, or rowcounts are greater than expected:
    
       rollback tran
    
    else
    
       commit tran
    */
    
    -- disable updates of system tables
    
    exec sp_configure 'allow updates to system tables',0
    go
    
    • 0

相关问题

  • 固定值字段的外键约束

  • 为什么同时使用 TRUNCATE 和 DROP?

  • 已经连接时是否有与 isql 等效的 -w ?

  • 如何从 isql 将参数传递给“SQL 脚本”

  • 如何识别具有指向 Sybase 中特定表的外键的表?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve