Categories: SQL Server

Datenbank Benutzer einem Login zuordnen

Das Problem: Man nehme eine Datenbanksicherung und stellt diese auf einen anderen SQL Server wieder her. In der Datenbank sind SQL-User enthalten, die auf dem neuen SQL Server kein Login besitzen.  Das Anlegen eines neuen Logins passend zu dem User bringt zunächst nichts, da der SQL Server im Falle eines SQL Users eigene interne IDs vergibt. Somit ist für SQL Server das Login identisch mit DB User, wenn die IDs übereinstimmen.

Bsp: Hans besitzt auf SQL 1 ein Login und ist der Datenbank DB1 zugeordnet. Das Backup der DB1 wird auf SQL 2 wiederhergestellt. Hans kann sich nicht einloggen, obwohl er in der DB1 als DB User vorhanden ist.

Logins sind Bestandteil der master Datenbank und kontrolliert bspw. Anmeldungen und Zugehörigkeiten zu Serverrollen. Die Einträge des Datenbankbenutzers in der Datenbank selbst regeln Zugehörigkeiten zu Datenbankrollen und vor allem auch Ausführungsrechte innerhalb der Datenbank.

Eine Lösung wäre etwa den User aus der DB zu entfernen und über das Login neu zu mappen und die Rechte wieder zuzuweisen… aber ehrlich gesagt…grausam!

Ein andere nette Lösung ist, das Login des Users neu anzulegen (gleicher Name) , aber zunächst nicht der Datenbank zuzuordnen (würde sowie scheitern, da er bereits enthalten ist).  Mit Hilfe der Prozedur sp_change_users_login kann der DB User dem Login zugeordnet werden

use DB1
sp_change_users_login ‚Auto_fix‘,’Hans‘,NULL,’passw0rd‘

Die Prozedur legt, falls der Benutzer nicht vorhanden ist, das Login an und ordnet dem Login den genannten DB Benutzer zu. (Auto_fix). Gleichzeitig kann auch das Passwort des Logins mit vergeben werden.

Mit

sp_change_users_login ‚Report‘

kann jeder nicht verknüpfte User der Datenbank und seine SID aufgelistet werden. Sofern ein bestehendes Login (Hans) einfach dem DB Benutzer(Hans) einfach nur zugeordnet werden soll, dann erreicht man das mit:

sp_change_users_login ‚Update_one‘, ‚Hans‘,’Hans‘

Fumus

Share
Published by
Fumus
Tags: Login

Recent Posts

SQL Server 2019 – static data masking – Du Opfer!

In SQL Server 2016 wurde das sog. dynamic data masking eingeführt. Eine Möglichkeit Daten bei…

5 Jahren ago

MinRole – Oder wie alles etwas einfacher wird

Seit Sharepoint Server 2007 präsentiert sich die Installation immer auf die gleiche Weise. Gerade mal,…

8 Jahren ago

Schritt für Schritt: SQL 2016 – Dynamic Data Masking

Es weihnachtet! Gerade bekam ich von einer Kollegin Plätzchen angeboten mit der Größe eines Diskus…

8 Jahren ago

Schritt für Schritt: SQL Server 2016 – temporal tables

Nein, bitte nicht verwechseln: temporal tables haben nichts zu tun mit temporary tables table variables…

9 Jahren ago

SQL Server 2016 Schritt für Schritt–Installation und First Look

SQL Server 2016.. habe ich schon erwähnt, dass ich den ziemlich cool finde? Wollen wir…

9 Jahren ago

SQL Server 2016 – CTP2

Nach langer Zeit wieder mal eine Artikel von mir.. der mich besonders erfreut. SQL Server…

9 Jahren ago