代码之家  ›  专栏  ›  技术社区  ›  Will Strohl

SQL Server数据库缺少SCHEMA和sys用户的信息

  •  0
  • Will Strohl  · 技术社区  · 8 年前

    我有一个数据库,已恢复到我的环境中,从一个生产网站的发展。最初的数据库是SQL Server 2016,在我的开发环境中也是2016。我使用redgate SQL Compare/Data Compare将其迁移到2014年,以实现跨环境的最大兼容性。

    在恢复的SQL Server 2016和2014环境中,列出了两个用户,但有一个图标指示他们丢失(红色X在他们上方)。

    如果我运行一个查询来列出数据库中的所有用户,它们似乎确实丢失了。下面是查询示例。

    select suser_sname(owner_sid) as 'Owner', state_desc, * 
    from sys.databases 
    order by [name]
    
    select * 
    from master.sys.server_principals  
    order by [name]
    

    有问题的两个用户帐户是 INFORMATION_SCHEMA 和 sys

    https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/principals-database-engine?view=sql-server-2017#informationschema-and-sys-users-and-schemas

    为什么恢复数据库后这些帐户会丢失?

    我需要添加它们吗?如果是,我如何安全地做到这一点?根据以下文档中提供的步骤,它们不会被列为孤立帐户。

    https://docs.microsoft.com/en-us/sql/sql-server/failover-clusters/troubleshoot-orphaned-users-sql-server?view=sql-server-2017

    不重新创建这些用户帐户有什么风险?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dan Guzman    8 年前

    SSMS对象资源管理器中用户图标的红色X表示用户没有 CONNECT sys 和 INFORMATION_SCHEMA 这些数据库主体仅用于具有相同名称的对应模式的所有权。

    sid 价值 NULL 在查询时为这些用户 sys.database_principals .

    所以底线是这是正常的(数据库恢复或不恢复),所以不需要任何操作。