Bei der Migration von SQL Server-Datenbanken zwischen Instanzen ist das Skripten von Logins mit dem originalen Passwort-Hash und der originalen SID entscheidend – sonst entstehen “Orphaned Users” in den migrierten Datenbanken.
Das Problem: Orphaned Users
Datenbankbenutzer sind intern mit ihrer Login-SID verknüpft. Wenn ein Login auf einer neuen Instanz mit einer anderen SID erstellt wird, können die Datenbankbenutzer dem Login nicht zugeordnet werden – sie werden “verwaist” (Orphaned).
Logins mit Hash und SID skripten
-- Script für alle SQL Logins mit Hash und SID
SELECT
'CREATE LOGIN [' + name + '] WITH PASSWORD = ' +
CONVERT(VARCHAR(MAX), password_hash, 1) + ' HASHED, ' +
'SID = ' + CONVERT(VARCHAR(MAX), sid, 1) + ', ' +
'DEFAULT_DATABASE = [' + default_database_name + '], ' +
'CHECK_POLICY = ' + CASE is_policy_checked WHEN 1 THEN 'ON' ELSE 'OFF' END + ', ' +
'CHECK_EXPIRATION = ' + CASE is_expiration_checked WHEN 1 THEN 'ON' ELSE 'OFF' END
FROM sys.sql_logins
WHERE name NOT LIKE '##%' -- Interne Logins ausschließen
AND name != 'sa';
Windows Logins skripten
-- Windows Logins (AD-Accounts und Gruppen)
SELECT
'CREATE LOGIN [' + name + '] FROM WINDOWS WITH ' +
'DEFAULT_DATABASE = [' + default_database_name + ']'
FROM sys.server_principals
WHERE type IN ('U', 'G') -- U=Windows User, G=Windows Group
AND name NOT LIKE 'NT %'
AND name NOT LIKE 'BUILTIN%';
Mit diesem Verfahren werden Logins mit exakt denselben SIDs auf der Zielinstanz erstellt – Orphaned Users werden vermieden, und die migrierten Datenbanken funktionieren sofort ohne manuelle Neuzuweisung.








