SQL Server数据库缺少INFORMATION_SCHEMA和sys用户

时间:2018-09-27 22:36:49

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

我有一个数据库,该数据库已从生产网站恢复到我的环境中进行开发。原来的数据库是SQL Server 2016,在我的开发环境中也原来是2016。我使用Red Gate SQL比较/数据比较将其迁移到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

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

1 个答案:

答案 0 :(得分:0)

SSMS Object Explorer中用户图标的红色X表示用户没有对数据库的CONNECT权限。对于sysINFORMATION_SCHEMA数据库主体,这是预期的,因为它们仅用于拥有相同名称的相应模式的所有权。

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

因此,最重要的是这是正常的(无论是否恢复数据库),因此无需执行任何操作。