Après l'attachement ou la restauration d'une base de données, les utilisateurs et les connexions précédemment créés dans cette base de données ne correspondent pas et sont considérés comme des utilisateurs orphelins. Les symptômes les plus courants sont les suivants:
Méthode 1
Cette méthode fonctionne toujours jusqu'à MSSQL 2025, mais sera deprecié dans les prochaines release.
USE adventureWorks GO sp_change_users_login @Action='Report' GO
USE AdventureWorks GO sp_change_users_login @Action='update_one', @UserNamePattern='TestUser1', @LoginName='TestUser1' GO
Méthode 2
-- 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;
alter user 'robert' with login 'robert'
-- 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'