web-dev-qa-db-fra.com

Utilisateur SQL Server DB mappé sur Windows Connexion non dans les connexions SQL Server

Je suis sur un serveur SQL 2008 où je me connecte avec domaine\user_a

Sur ma base de données, je peux voir que ce login est mappé sur l'utilisateur DBO de cette base de données. Ce que je ne comprends pas, c'est que le domaine\user_a est nulle part dans les connexions de sécurité des serveurs SQL.

Current_user rapporte DBO System_user rapports Domaine\user_a comme le signal_name

Je ne trouve pas de domaine\user_a dans les sys.syslogins? Que se passe-t-il? Un utilisateur de base de données peut-il avoir sa propre connexion contournant le serveur SQL?

3
Jeppe

La seule façon dont une connexion a des droits sur un serveur est si ces droits ont été accordés. La question est probable: comment ces droits ont-ils été accordés?

Si Domain\user_a est membre de certains groupes Windows, alors via les droits accordés au groupe, le domaine\user_a login existe sur le serveur. Ceci est vrai même s'il n'y a pas d'entrée individuelle dans sys.database_principaux ou sys.server_principaux pour ce login.

Vous pouvez rechercher les chemins d'autorisation utilisées par un identifiant comme suit:

EXEC xp_logininfo 'DOMAIN\USER_A', 'all'

Vous pourriez trouver plusieurs chemins de permission pour une connexion.

4
RLF

Veuillez cesser de regarder syslogins. Il s'agit d'une table système obsolète qui est désormais une vue de compatibilité en arrière et n'est là que là-bas à cette fin (pour éviter de casser l'ancien code).

L'utilisateur est dbo probablement parce qu'ils ont créé la base de données.

Vous devriez être capable de trouver le login que l'utilisateur est associé à l'utilisation:

SELECT login_name = sp.name, user_name = dp.name
  FROM that_database.sys.database_principals AS dp
  INNER JOIN sys.server_principals AS sp
  ON dp.[sid] = sp.[sid];

Maintenant, il se peut que l'utilisateur n'a pas son propre identifiant et a reçu un accès à l'instance via un groupe Windows.

4
Aaron Bertrand