Начнем с того, что GRANT неверен по одной очевидной причине: он использует имя [PUBLIC]
для грантополучателя, но оно должно быть [public]
. При установке с учетом регистра имя не будет разрешено.
Теперь по вашему вопросу: часть AS [sa]
относится к действию по предоставлению разрешения, она не передается грантополучателю. Читается что-то вроде:
Я, от имени [sa]
, предоставляю право подключения к конечной точке [TSQL Default TCP]
членам группы [public]
.
В частности, не подразумевает, что грантополучатель (члены [public]
) должен быть повышен до [sa]
. Предоставление разрешения на подключение является необходимой, но недостаточной привилегией для подключения к базе данных. Получателю гранта все равно потребуется разрешение на доступ к базе данных (т. Е. Для сопоставления пользователя с его логином в базе данных). Кроме того, предоставление разрешения на подключение субъекту сервера [public]
не эквивалентно созданию имени входа для участников безопасности BUILTIN\Everyone
(или BUILTIN\ANONYMOUS LOGIN
в этом случае ...) (или другой встроенной учетной записи * 1025). *) ... Другими словами, пользователь NT, который не имеет логина (явного или неявного через членство в группе NT) в SQL Server, все равно не сможет подключиться к экземпляру.
В качестве примечания, выполнение следующего запроса в любой новой установке показывает, что разрешение на подключение к конечной точке T-SQL по умолчанию уже предоставлено [public]
:
select s.name as grantee,
e.name as endpoint,
p.permission_name as permission,
p.state_desc as state_desc
from sys.server_permissions p
join sys.server_principals s on s.principal_id = p.grantee_principal_id
join sys.endpoints e on p.major_id = e.endpoint_id
where p.type='CO'