Urios logo

Een Microsoft SQL database verhuizen

Dit artikel is geschreven voor systeembeheerders en heeft niet de intentie normale gebruikers te helpen een database te verhuizen. In dit document gaan wij uit van technische kennis die niet alle normale gebruikers beheersen.

Dit document leidt u door de stappen voor het verhuizen van een Microsoft SQL database, i.c. de Urios2 database. De stappen zijn gebaseerd op Microsoft SQL 2005 en 2012, maar naar mijn weten ook te gebruiken op Microsoft SQL 2000, 2008 en 2008 R2.

Stap 1: De database van de oude server halen

In principe kunt u gewoon de bestanden Urios2.mdf en Urios2_log.ldf van de oude computer kopiëren. Vergewis u er van dat de bestanden niet in gebruik zijn, dus zorg ervoor dat of de service gestopt is of dat de database ontkoppeld is. Deze bestanden bevinden zich normaal gesproken in de map C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data (zonder "(x86)" op 32-bits systemen, en "MSSQL.1" kan een ander nummer hebben indien er meerdere instanties van de SQL Server zijn geïnstalleerd).

Ontkoppelen van de database

  • Start op de oude server de opdrachtprompt "Als administrator"
  • Login op de database: osql -E -S .\sqlexpress
  • Ontkoppel de database:
    sp_detach_db 'Urios2'
    go
  • Sluit osql: exit

 

Stap 2: Verwijder lege database op de nieuwe server

 

Er vanuit gaande dat op de nieuwe server de SQL Server is geïnstalleerd met de Urios Server installatie (zie Download) staat er nu op de server een lege Urios2 database. Deze dient eerst verwijderd te worden alvorens we de gevulde database van de oude server kunnen plaatsen.

Database verwijderen

  • Start op de nieuwe server de opdrachtprompt "Als administrator"
  • Login op de database:
    sqlcmd -E -S .\sqlexpress (voor SQL 2005) of
    sqlcmd -E -S .\urios_sql2012 (voor SQL 2012).
  • Controleer of de database daadwerkelijk leeg is:
    use Urios2
    select top 1 LawyersName from Lawyers
    go

    Dit zou "(betreft 0 rijen)" moeten retourneren.
  • Verwijder de database:
    use master
    drop database [Urios2]
    go
  • Sluit osql: exit

Stap 3: Koppel de oude database aan de nieuwe server

Het is gebruikelijk alle database bestanden in de Data map van Microsoft SQL Server te zetten.
Voor SQL 2005 is dit C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data
Voor SQL 2012 is dit C:\Program Files\Microsoft SQL Server\MSSQL11.URIOS_SQL2012\MSSQL\Data
Technisch gesproken kunt u ze ook ergens anders plaatsen, zolang ze maar niet op een netwerkshare worden geplaatst.

Kopieer de bestanden Urios2.mdf en Urios2_log.ldf van de oude server naar de juiste map op de nieuwe server. Hierbij worden geen bestanden overschreven, mochten de bestanden al bestaan controleer dan of stap 2 correct is uitgevoerd.

Na het plaatsen van de bestanden moeten deze gekoppeld worden aan de SQL Server.

Koppelen van database aan een server

  • Start op de nieuwe server de opdrachtprompt (cmd) "Als administrator"
  • Login op de database: sqlcmd -E -S .\sqlexpress of sqlcmd -E -S .\urios_sql2012
  • Maak en koppel de database:
    sp_attach_db 'Urios2', 
    'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Urios2.mdf', 
    'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Urios2_log.ldf'
    go
    
    (pas waar nodig de mapnamen aan)
  • Test of u bij de database kunt:
    use Urios2
    select LawyersName from Lawyers
    go
    (dit moet een lijst van alle actieve en oud medewerkers geven)
  • Sluit sqlcmd: exit

Stap 4: Herdefinieer de SQL gebruikers

SQL Server kent twee soorten logins: Windows Authenticatie en SQL Authenticatie. Qua rechten structuur is de SQL Authenticatie het eenvoudigst in te richten. Verder kent SQL Server een gelaagde manier van definiëren van gebruikers. Op instantieniveau worden "logins" gemaakt, op databaseniveau "users". Na het verplaatsten van de database heeft de database een user die niet gekoppeld is aan login en kunt u niet inloggen met SQL Authenticatie. Wij raden aan de login en de user te verwijderen en opnieuw te maken.

Verwijderen en aanmaken login en user

  • Start op de nieuwe server de opdrachtprompt
  • Login op de database: sqlcmd -E -S .\sqlexpress of sqlcmd -E -S .\urios_sql2012
  • Maak Urios2 de actieve database:
    use Urios2
    go
  • Verwijder de bestaande login en user:
    drop user urios2
    go
    drop login urios2
    go
  • Maak de nieuwe login en user aan:
    create login urios2 with password = '_urios2_', check_policy=off
    go
    create user urios2 for login urios2
    go
    sp_addrolemember 'db_owner', 'urios2'
    go
  • Sluit sqlcmd: exit
  • Controleer dat u kunt inloggen met de SQL account:
    sqlcmd -U urios2 -P _urios2_ -S .\sqlexpress
    of met instance .\urios_sql2012
  • Sluit sqlcmd: exit