meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sql_server:database:orphans [05/11/2025 09:31] mdlsql_server:database:orphans [05/11/2025 10:30] (Version actuelle) mdl
Ligne 6: Ligne 6:
   * un message indiquant que l'utilisateur existe déjà dans la base de données actuelle lorsque vous essayez d'ajouter l'identifiant de connexion à la base de données.    * un message indiquant que l'utilisateur existe déjà dans la base de données actuelle lorsque vous essayez d'ajouter l'identifiant de connexion à la base de données. 
  
 +**__Méthode 1__**
 +
 +Cette méthode fonctionne toujours jusqu'à MSSQL 2025, mais sera deprecié dans les prochaines release.
 +  * Identifier les Orphelins
 +<code TSQL>
 +USE adventureWorks
 +GO
 +sp_change_users_login @Action='Report'
 +GO
 +</code>
 +
 +  * corriger les orphelins
 +<code TSQL>
 +USE AdventureWorks
 +GO
 + 
 +sp_change_users_login @Action='update_one',
 +@UserNamePattern='TestUser1',
 +@LoginName='TestUser1'
 +GO
 +</code>
 +
 +**__Méthode 2__**
 +
 +
 +  * Identifier les Orphelins
 +<code TSQL>
 + -- Use your database
 +USE [YourDatabaseName];
 +GO
 +
 +-- Create a temporary table to store user information
 +CREATE TABLE #DBUsers
 +(
 +    DBUserName NVARCHAR(128),
 +    DBUserSID VARBINARY(85)
 +);
 +
 +-- Insert database user information into the temp table
 +INSERT INTO #DBUsers (DBUserName, DBUserSID)
 +SELECT name, sid 
 +FROM sys.database_principals 
 +WHERE type_desc IN ('SQL_USER', 'WINDOWS_USER', 'WINDOWS_GROUP');
 +
 +-- Select and compare with instance logins
 +SELECT 
 +    u.DBUserName AS DatabaseUser, 
 +    u.DBUserSID AS DatabaseUserSID,
 +    p.name AS InstanceLogin,
 +    p.sid AS InstanceLoginSID,
 +    CASE 
 +        WHEN p.sid IS NULL THEN 'Orphaned User' 
 +        ELSE 'Matched' 
 +    END AS Status
 +FROM 
 +    #DBUsers u
 +LEFT JOIN 
 +    sys.server_principals p ON u.DBUserSID = p.sid;
 +
 +-- Drop the temporary table
 +DROP TABLE #DBUsers;
 +</code>
 +
 +  * corriger les orphelins si le Login existe déjà
 +<code TSQL>
 + alter user 'robert' with login 'robert'
 +</code>
 +
 +  * ou créer le Login en forçant le SID du user de BDD
 +<code TSQL>
 +-- Lister le SID du user de BDD1211
 +use [DB1]
 +GO
 +select name,type_desc,create_date,sid from sys.database_principals
 +
 +
 +-- SQL LOGIN
 +create login [robert]
 +with password 'xxxxxx', sid='xxxxx'
 +
 +-- AD USER/GROUP
 +create login [AD\robert] from windows
 +with  sid='xxxxx'
 +</code>