База данных SQL Server отсутствует INFORMATION_SCHEMA и системные пользователи - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть база данных, которая была восстановлена ​​в моей среде с рабочего сайта для разработки.Первоначальной базой данных был SQL Server 2016, а в моей среде разработки он тоже был 2016 годом.Я использовал Red Gate SQL Compare / Data Compare, чтобы перенести его в 2014 г. для максимальной совместимости между средами.

В обеих восстановленных средах SQL Server 2016 и 2014 есть два пользователя в списке, но значок, указывающий, что они отсутствуют(красный Х над ними).

Если я выполню запрос, чтобы вывести список всех пользователей в базе данных, они действительно будут отсутствовать.Примеры запросов приведены ниже.

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 ниже.

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 голосов
/ 28 сентября 2018

Красный X для значка пользователя в SSMS Object Explorer указывает, что у пользователя нет разрешения CONNECT на базу данных.Это ожидается для участников базы данных sys и INFORMATION_SCHEMA, поскольку они используются исключительно для владения соответствующими схемами с тем же именем.

Запросы в вашем вопросе возвращают принципалы уровня сервера, поэтому эти пользователи базы данных, которые не сопоставлены с именами входа, не возвращаются.Вы увидите sid значение NULL для этих пользователей при запросе sys.database_principals.

Итак, суть в том, что это нормально (восстановление базы данных или нет), поэтому никаких действий не требуется.

...