MSSQL 2005 Bug beim Umbenennen eines Users oder Logins

Wenn man versehentlicher Weise mal einen User im Active Directory angelegt hat, wo der Name und der Anmeldename nicht ganz stimmt aber zudem schon alles in den restlichen Bereichen, wie CTI, Exchange, MS SQL usw. angelegt hat, dann „Prost Mahlzeit“ beim Umbenennen. Normalerweise gehe ich dann immer so vor, dass ich den User komplett überall herauslösche (AD, MSSQL, Exchange usw.) und anschließend einen neuen User erstelle… Warum ich das in diesem Fall nicht gemacht habe kann ich leider auch nicht mehr sagen… ich werde in Zukunft aber bei der sicheren LÖSCH-Variante bleiben :-).

Nun gut… nachdem ich also den User komplett umbenannt hatte und auch der Meinung war alle Stellen erwischt zu haben, stellte sich heraus, dass es beim Login in Microsoft Dynamics NAV (Basis ist ein SQL-Server 2005 SP2) Probleme gab. Der Login war immer noch der alte Benutzername, obwohl dieser im Management Studio schon aktualisiert wurde.

Ewiges Umbenennen und neu anlegen half nicht. Angezeigt wurde er mir bei der Suche im AD über den SQL richtig, klickt man aber auf OK, legte er den SQL-Login immer mit dem falschen Anmeldenamen an… Meine Herren!
Wie sich herausstellte, ist das ein Bug in der 2005er Version des Microsoft SQL Servers. 

 

Ab SQL Server 2005 SP2 gibt es einen Workaround:

Problembeschreibung:

The problem will be when trying to access/manipulate metadata since SQL Server will use the metadata (MD) copy of the NetBIOS name (i.e. the old name) and we won’t be able to identify the new name.

The root cause for this problem is the fact that SQL Server keeps a copy of the Windows NetBIOS user name in MD and we use this MD copy whenever a name-based operation on the user is made instead

of relying exclusively on the SID. 

This is a well known limitation of SQL Server and it has been there since Windows authentication was introduced (SQL Server 7 if I do remember). In SQL Server 2005 SP2 we introduced a mechanism that

allows you to rename the login and user to match the updated Windows name:

 

ALTER LOGIN [Old_Windows_name] WITH NAME = [New_Windows_name]
ALTER USER [Old_Windows_name] WITH NAME = [New_Windows_name]

 

As long as the SID in MD for [Old_Windows_name] matches the SID for [New_Windows_name], this operation should succeed and properly rename the principal login/user name in MD. For more information please refer to BOL:

http://msdn.microsoft.com/en-us/library/ms189828.aspx
http://msdn.microsoft.com/en-us/library/ms176060.aspx

 

Nachdem ich die oben beschriebenen Schritte vollzogen hatte, funktionierte der Login mit dem umbenannten User wunderbar…

Zwei Stunden später stand der User mit dem alten Loginnamen wieder in der SQL… WTH!
Ich glaube dies ist aber dem NAV zuzurechnen, da dieser auch komischerweise seine Logins mit dem SQL synchronisiert und dort scheinbar immer noch bei der alten SID den alten Loginnamen stehen hatte…

Fazit: An einem ruhigen Abend erst mal die Löschvariante vollzogen und nach 1,5 Stunden war der User komplett neu und sauber angelegt … in allen Applikationen.