Klaus R. schrieb:
Ich richte gerade auf einem neuen Rechner eine SQL Datenbank ein. Mit
dem Microsoft SQL Server Managment Studio habe ich über ein Backup eine
Datenbank wieder eingespielt.
Damit hast du zwar die Datenbank eingespielt, aber deren Benutzer sind nicht mit irgendwelchen Logins des existierenden Servers verknüpft unter der sie jetzt laufen.
Echten Zugriff auf diese Datenbank bekommen also nur Logins, die die SQL-Server-Rolle Sysadmin haben. Andere User können die DB maximal och als solche sehen und irgendwelche sicherheitstechnisch unwichtigen Trivialitäten darin.
Jetzt ist unter Security -> Logins der sa rot makiert.
Was bedeutet das?
Vermutlich: Der Server ist nicht dafür konfiguriert, überhaupt Logins mit SQL-Accounts zu akzeptieren. Wenn das so ist, wird es auch keinen sa-Login geben und dementsprechend nix, was mit einen in der DB eventuell existierenden sa-Nutzer verknüpft sein (oder werden) könnte.
Also: dir ist offensichtlich nicht klar, das es erstens eine Trennung zwischen DB-Benutzern und Server-Logins gibt. Und zweitens ist dir nicht klar, das es zwei verschiedene Arten von Logins gibt. Dieses ganze Unwissen führt jetzt zu deinem Problem.
Die Lösung ist:
Erstens muß du dich entscheiden, ob du dem Server auch SQL-Logins erlauben willst. Das ist nicht unbedingt nötig, um vollen Zugriff auf die importierte DB zu erlangen. Kann man also machen, muß man aber nicht. Man muß nur wissen: ohne Aktivierung dieses Feature gibt es überhaupt keinen sa-Login!
Ob du den also nun einrichtest oder nicht, weiter geht es so:
Melde dich beim Server mit einem Login an, der die Sysadmin-Rolle besitzt. Das ist mindestens der Windows-User, der den Server eingerichtet hat. Ggf. halt aber auch der sa-User, wenn der Server SQL-Logins erlaubt.
Damit hast du dann vollen Zugriff auch auf die importierte Datenbank, insbesondere siehst du alle für diese konfigurierten Benutzer. Die siehst du nicht im "Security/Sicherheit"-"Unterordner" des Servers, sondern im gleichnamigen "Unterordner" der Datenbank.
Alles, was du nun noch machen musst: diese Benutzer sinnvoll mit existierenden Server-Logins verknüpfen. Oder wahlweise auch: entsprechende Server-Logins erschaffen und die DB-Benutzer dann mit diesen verknüpfen.
Dazu gibt es dann verschiedene Möglichkeiten, von denen die naheliegendste allerdings nicht funktioniert. Nämlich: man geht von den Server-Logins aus und versucht, die mit existierenden DB-Usern zu verknüpfen. Das klappt aber oft nicht. Das bekloppte Studio sieht hier nur den Fall vor, dass der Login mit einem noch zu erstellenden DB-User verknüpft wird und scheitert deshalb, wenn es einen gleichnamigen bereits in der DB gibt...
Da muß man dann auf SQL-Ebene aktiv werden. Einfach einen Editor für die betreffen DB öffnen (wichtig: falls das Studio den Editor für "master" oder irgendeine andere DB öffnet, muß man hier nachbessern) und dann mittels folgender simplen Zeile einen User mit einem Login verknüpfen:
alter user <DB-User-Name> with login <Server-Login-Name>;
Das macht man dann für jeden User, der in der DB existiert und der Drops ist gelutscht.