Gibt es eine Möglichkeit, einen verwaisten Benutzer in einer SQL 2005/2008-Datenbank mit SQL SMO zu reparieren?
Sie können verwaiste Benutzer relativ einfach finden, indem Sie über die Benutzer aufzählen und nach einer leeren Eigenschaft User.Login
suchen:
Leider ist die Fehlerbehebung nicht so einfach, wie die Eigenschaft User.Login
auf den übereinstimmenden Server-Login-Namen zu setzen. User.Login
hat einen Setter, aber ich bin mir nicht bewusst, wie ich das zurück auf den Server propagieren kann. Es wird nur angezeigt, wenn Sie ein neues User
erstellen.
Ich habe erwogen, den Benutzer aus der Datenbank zu entfernen und die Server-Anmeldung erneut an die Datenbank zu binden, aber das bringt zusätzliche Komplikationen mit sich. Komplikationen wie das Neuzuweisen von Standardschemas, Rollen und, wenn sie ein eigenes Schema in der Datenbank besitzen, gibt es mehr Probleme beim Durchlaufen dieser Änderungen. Es ist genug, um Sie dazu zu bringen, die SQL zu inline zu machen und damit fertig zu werden:
%Vor%Ich würde es jedoch vorziehen, einen Aufruf an eine gespeicherte Systemprozedur nicht einzubinden.
Irgendwelche Vorschläge?
Leider ist SMO nicht viel besser als SQL-DMO, um Methoden zur Verfügung zu stellen, sollte verfügbar sein. Du wirst Inline-SQL verwenden müssen:
%Vor%oder
%Vor%Von T-SQL ALTER LOGIN ... MIT LOGIN = ...
LOGIN = Anmeldename
Ordnet einen Benutzer neu zu eine weitere Anmeldung durch Änderung des Benutzers Sicherheits-ID (SID) zum Abgleich mit Login-SID.
Jetzt habe ich es nicht ausprobiert, weil ich SIDs über Server hinweg synchronisieren würde (und heutzutage selten SQL-Logins verwende)
Dies entspricht jedoch der User.Alter-Methode .
Also, es könnte funktionieren ...
Wenn es nicht gefällt, den gleichen Login zu verwenden, denke ich, dass Sie einen anderen Login und zurück zuordnen könnten.
Für mich funktionierte diese Syntax gut
%Vor%Ich habe es hier gefunden: Ссылка
Tags und Links sql-server smo