Announcement

Collapse
No announcement yet.

db Serverumzug / Wiederherstellung auf anderen Server

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • db Serverumzug / Wiederherstellung auf anderen Server

    hallo,
    ich versuche mich gerade wieder mal daran eine Datenbank von einem Server auf den anderen umzuziehen. In der Datenbank sind die SQL-Benutzer noch vorhanden und am Zielserver existieren die SQL-Benutzer nicht.

    Wie ist da das richtige Vorgehen wenn die SQL-Benutzer Schematas haben?

    Ich kann die Benutzer am neuen Server anlegen aber nicht der Db zuweisen weil er dort schon existiert....

  • #2
    Hallo openshinok,

    wenn man einen neuen Server aufsetzt und mit den Datenbank umziehen will, muss man die ganzen Benutzer anlegen; man kann sie auch übertragen lassen.
    Die Accounts werden in der "master" gespeichert.

    Welcher User in welcher DB welche Rechte hat, wird in der jeweiligen DB gespeichert, mit Referenz auf den User in der Master.
    Durch den Umzug stimmen die IDs nicht mehr überein, man spricht dann von "verwaisten User" in der DB.

    Das kann man korrigieren lassen über:

    EXEC sp_change_users_login @Action = 'Auto_fix', @UserNamePattern = 'DatenbankUserName'

    Ich habe mir dazu mal ein Script angelegt, das war aber noch zu SQL Server 2000 Zeiten, ob das mit anderen Versionen noch funktioniert ...
    [highlight=SQL]--************************************************** ************************************************
    -- Alle SQL User in den DB wieder aktivieren
    -- Muss für jede Datenbank auf dem Zielserver ausgeführt werden
    DECLARE @NTName varchar(128);
    DECLARE @SQL varchar(128);

    DECLARE curUser CURSOR FOR
    SELECT [name]
    FROM master.dbo.syslogins
    WHERE isntgroup = 0;

    OPEN curUser
    FETCH NEXT FROM curUser INTO @NTName
    WHILE @@FETCH_STATUS = 0
    BEGIN
    -- SET @SQL = 'exec sp_change_users_login @Action = ''Auto_fix'', @UserNamePattern = ''' + @NTName + ''''
    -- EXEC sp_MSforeachdb @command1 = @SQL
    EXEC sp_change_users_login @Action = 'Auto_fix', @UserNamePattern = @NTName
    FETCH NEXT FROM curUser INTO @NTName
    END
    CLOSE curUSer
    DEALLOCATE curUSer[/highlight]

    Funktioniert aber auch nur, wenn der Datenbank-Usernamen dem Loginnamen entspricht!
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment

    Working...
    X