User inkl. Berechtigungen von einem Server auf den anderen übertragen
-
terça-feira, 13 de março de 2012 13:22
Hallo Forum,
ich muss von einem SQL Server 2005 auf einen anderen ca. 25 DBs inkl. User + Berechtigungen pro DB übertragen.
1. DBs-Import löse ich einfach: auf den alten Server mache ich die aktuellen Backups, auf den neuen die Restore-s -> erledigt.
2. Alleine die Accounts (ca. 70) zu übertragen ist auch kein großes Problem, dazu gibt es ein Script auf der Seite von MS.
3. Aber wie übertrage ich die jeweiligen User-Berechtigung per DB? Gibt es etwas fertiges, oder muss man sich ein Script ausdenken: Foreach jede DB, User-Name, Berechtigungen auslesen und dann auf den neuen Server übertragen? Danke für Euere Hilfe P.
Todas as Respostas
-
terça-feira, 13 de março de 2012 13:33
Hi,
dafür gibt es extra einen eigenen SSIS Task. Dieser überträgt die Benutzer auf den neuen Server. Da die Berechtigungen innerhalb der Datenbank auch in der Datenbank stehen, muss lediglich eine Verknüpfung für den Datenbankuser zum Serveruser (Nenne ich jetzt mal so :-)) hergestellt werden.
Dies erledigt der Task. Allerdings ist dabei zu beachten, dass die Passwörter bei DB Usern (nicht bei Windows Usern) zurück gesetzt werden muss, da der neue Datenbankserver auch einen neuen Key zum verschlüsseln nutzt.
Grüße
Oliver
- Marcado como Resposta Purclot terça-feira, 13 de março de 2012 14:50
-
terça-feira, 13 de março de 2012 13:36
Am 13.03.2012 schrieb Purclot:
ich muss von einem SQL Server 2005 auf einen anderen ca. 25 DBs inkl. User + Berechtigungen pro DB übertragen.
Dazu gab es nebenan kürlich einen Thread:
http://social.msdn.microsoft.com/Forums/de-DE/sqlserverde/thread/be9eaa26-da0e-42c4-b10c-3c4bccca6009#be9eaa26-da0e-42c4-b10c-3c4bccca6009Servus
Winfried
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: http://www.gruppenrichtlinien.de
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/- Marcado como Resposta Purclot terça-feira, 13 de março de 2012 14:50
-
terça-feira, 13 de março de 2012 13:38
3. Aber wie übertrage ich die jeweiligen User-Berechtigung per DB?
Hallo,
die sind alle in den Datenbanken selbst gespeichert, da musst Du nichts weiter beachten.
Das einzige, was es noch gäbe, sind die Zuordnung der Logins zu den Server-Rollen; aber mal davon ausgehend, das Du nicht hunderte von Accounts mit Server-Rollen wie SysAdmin hast, könnte man das zur Not auch manuell nachpflegen.
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Marcado como Resposta Purclot terça-feira, 13 de março de 2012 14:50
-
terça-feira, 13 de março de 2012 14:51
Hallo,
danke für Euere Hilfe.
P.
-
quarta-feira, 14 de março de 2012 07:55Usuário que responde
Für die Serverrollen einfach das Skript erzeugen und ausführen:
-- Server-Rollen with serv_permission as ( select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''sysadmin'';' as script from master..syslogins where sysadmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''securityadmin'';' as script from master..syslogins where securityadmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''serveradmin'';' as script from master..syslogins where serveradmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''setupadmin'';' as script from master..syslogins where setupadmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''processadmin'';' as script from master..syslogins where processadmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''diskadmin'';' as script from master..syslogins where diskadmin = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''dbcreator'';' as script from master..syslogins where dbcreator = 1 union select 'EXEC master..sp_addsrvrolemember @loginame = N'''+loginname+''', @rolename = N''bulkadmin'';' as script from master..syslogins where bulkadmin = 1 ) Select script from serv_permission order by script;
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Editado Christoph MuthmannMVP, Editor quarta-feira, 14 de março de 2012 07:57 Ausführlichkeit
-
quarta-feira, 14 de março de 2012 10:15Hallo Christoph,
danke für Dein hübsches Script, sehr hilfreich!
Eine Frage noch: der Code ist selbsterklärend aber irgendwie verstehe ich die Zeile "with serv_permission as (" nicht . Wird dadurch eine temporäre pseudo Tabelle erstellt?
Danke P. -
quarta-feira, 14 de março de 2012 14:09Usuário que responde
Hallo Peter,
das ist eine CTE (Common Table Expression).
http://msdn.microsoft.com/de-de/library/ms190766.aspx
Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu

