SQL 服务器数据库缺少 INFORMATION_SCHEMA 和 sys 用户
SQL Server database missing INFORMATION_SCHEMA and sys users
我有一个数据库已从用于开发的生产网站还原到我的环境中。原来的数据库是SQLServer 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_SCHEMA
和 sys
。根据下面的 MS 文档,这些似乎是内置用户帐户。
为什么恢复数据库后这些账户会丢失?
我需要添加它们吗?如果是,我该如何安全地做到这一点?根据以下文档中提供的步骤,它们不会被列为孤立帐户。
不重新创建这些用户帐户有什么风险?
SSMS 对象资源管理器中用户图标的红色 X 表示用户没有对数据库的 CONNECT
权限。这对于 sys
和 INFORMATION_SCHEMA
数据库主体来说是预期的,因为它们仅用于具有相同名称的相应模式的所有权。
您问题中的查询 return 服务器级主体,因此这些未映射到登录名的数据库用户未被 return 编辑。当您查询 sys.database_principals
.
时,您将看到这些用户的 sid
值 NULL
所以最重要的是这是正常的(数据库还原与否)所以不需要任何操作。
我有一个数据库已从用于开发的生产网站还原到我的环境中。原来的数据库是SQLServer 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_SCHEMA
和 sys
。根据下面的 MS 文档,这些似乎是内置用户帐户。
为什么恢复数据库后这些账户会丢失?
我需要添加它们吗?如果是,我该如何安全地做到这一点?根据以下文档中提供的步骤,它们不会被列为孤立帐户。
不重新创建这些用户帐户有什么风险?
SSMS 对象资源管理器中用户图标的红色 X 表示用户没有对数据库的 CONNECT
权限。这对于 sys
和 INFORMATION_SCHEMA
数据库主体来说是预期的,因为它们仅用于具有相同名称的相应模式的所有权。
您问题中的查询 return 服务器级主体,因此这些未映射到登录名的数据库用户未被 return 编辑。当您查询 sys.database_principals
.
sid
值 NULL
所以最重要的是这是正常的(数据库还原与否)所以不需要任何操作。