【问题标题】:SQL Server database missing INFORMATION_SCHEMA and sys usersSQL Server 数据库缺少 INFORMATION_SCHEMA 和 sys 用户
【发布时间】:2018-09-27 22:36:48
【问题描述】:

我有一个数据库已从生产网站恢复到我的环境中以进行开发。原来的数据库是SQL Server 2016,我的开发环境原来也是2016。我使用 Red Gate 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_SCHEMAsys。根据下面的 MS 文档,这些似乎是内置用户帐户。

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

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

【问题讨论】:

  • 我相信文档很清楚地说明了 They cannot be modified or dropped. 让他们去吧,他们很好。
  • 一些用户在通过模式比较工具创建时,我有一个红色的 x。某些权限未正确转移。我删除并重新创建了用户,红色的 x 消失了。

标签: sql sql-server database relational-database database-administration


【解决方案1】:

SSMS 对象资源管理器中用户图标的红色 X 表示用户没有数据库的 CONNECT 权限。这对于 sysINFORMATION_SCHEMA 数据库主体来说是预期的,因为它们仅用于具有相同名称的相应架构的所有权。

您问题中的查询返回服务器级主体,因此不会返回未映射到登录名的这些数据库用户。当您查询sys.database_principals 时,您将看到这些用户的sidNULL

所以底线是这是正常的(数据库恢复与否),所以不需要采取任何行动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2011-04-08
    • 2014-03-12
    • 2017-03-29
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    相关资源
    最近更新 更多