Skapa nya Login till databaser som har flyttats till en annan SQL Server
av Diana Dee
I våran planering till att uppgradera vår produktionsserver från SQL Server 7.0 till SQL Server 2000, så beslöt vi att vi först skulle partionera om hårddiskarna, installera om Windows 2000 Advanced Server och sedan installera SQL Server 2000. För att kunna hantera webbtrafiken med minimala avbrott, så planerade som så att vi skulle köra en backup på alla tio produktionsdatabaser för att sedan lagra dem på en temporär ersättningsserver, vilken skulle köra SQL Server 2000.
Alla dessa databaser har många användare. Användarna är mappade till sina SQL Server logins genom ett säkerhets-identifikationsnummer (SID). När man lagrar en databas på en annan SQL Server, så har inte den nya servern de login som databasanvändarna är mappade till. Eller om man har skapat nya login på den nya servern, så stämmer inte de SID på de nyskapade loginen ihop med de SID som är kopplade till användaren. Användarna ligger fortfarande kvar i sysusers tabellen, men de syns inte i Enterprise Manager. Den här situationen kallas ”Orphaned Users” (Övergivna användare).
En lösning till det här problemet är att använda sig av den lagrade proceduren sp_change_users_login och är sammanfattad i Knowledge Base artikel Q274188. Hur som helst så måste den här lösningen tillämpas databas för databas.
Alla login med dess krypterade lösenord, standarddatabaserna samt alla SIDs ska kopieras till en tabell i Northwind databasen (den här databasen valdes eftersom den redan finns då du installerat SQL Server). Proceduren, Create.LoginsTabel.sql, som utför det här, visas längre ner.
Nästa steg är att DTSa Logintabellerna från .Northwind till .Northwind.
Parallellt så måste du flytta alla databaser till den nya Servern. Detta måste du göra innan du skapar dina Login, eftersom det inte går att skapa ett Login för en standarddatabas som inte finns.
Efter att du har flyttat alla databaser, så kan du skapa dina nya Login med Create.logins.sql, som visas längre ner.