Tempus:Flytte database: Forskjell mellom sideversjoner

Fra DataGrafikk
Hopp til navigeringHopp til søk
Ny side: = Flytting av en Tempus-database til ny server = Merk at nye MSSQL-versjoner ikke nødvendigvis kan importere backup-filer fra eldre MSSQL-versjoner. Går man f.eks. fra SQL Server 2000…
 
Linje 12: Linje 12:
</syntaxhighlight>
</syntaxhighlight>


== Restore av database på ny server
== Restore av database på ny server ==


Kopier backup-filen til den nye serveren. Hvis databasenavn, filnavn el.l. ikke er de samme på den nye serveren, må dette oppdateres. Sjekk eventuelt hva filene i backupen heter:
Kopier backup-filen til den nye serveren. Hvis databasenavn, filnavn el.l. ikke er de samme på den nye serveren, må dette oppdateres. Sjekk eventuelt hva filene i backupen heter:

Sideversjonen fra 10. aug. 2017 kl. 12:40

Flytting av en Tempus-database til ny server

Merk at nye MSSQL-versjoner ikke nødvendigvis kan importere backup-filer fra eldre MSSQL-versjoner. Går man f.eks. fra SQL Server 2000 til 2012, må man gå via SQL Server 2005 (altså restore backup på 2005, og ta en ny backup fra 2005 videre til 2012).

Ta først en backup av databasen. Dette kan gjøres via SQL Server Management Studios UI-verktøy, eller via T-SQL. Eksemplene nedenfor bruker T-SQL. Erstatt "TempusDatabase" med navnet på databasen som skal flyttes, og katalognavn med passende kataloghenvisninger for de aktuelle serverne.

Backup av eksisterende database

BACKUP DATABASE	TempusDatabase
TO DISK = 'X:\Backup\TempusDatabase.bak'
WITH COPY_ONLY, COMPRESSION

Restore av database på ny server

Kopier backup-filen til den nye serveren. Hvis databasenavn, filnavn el.l. ikke er de samme på den nye serveren, må dette oppdateres. Sjekk eventuelt hva filene i backupen heter:

RESTORE FILELISTONLY FROM DISK = 'X:\Backup\TempusDatabase.bak'

Eksempel på innhold i backup-fil:

LogicalName PhysicalName Type FileGroupName ...
TempusDatabase D:\MSSQL\DATA\TempusDatabase.mdf D PRIMARY ...
TempusDatabase_log L:\MSSQL\DATA\TempusDatabase_log.ldf L NULL ...

Vi begynner med å opprette en ny tom database. For enkelhets skyld gir vi den samme navn som den hadde tidligere:

CREATE DATABASE TempusDatabase

Når vi kjører restore, spesifiseres ny katalog via MOVE:

RESTORE DATABASE TempusDatabase
FROM DISK = 'X:\Backup\TempusDatabase.bak'
WITH
  REPLACE,
  MOVE 'TempusDatabase' TO 'Y:\MSSQL\DATA\TempusDatabase.mdf',
  MOVE 'TempusDatabase_log' TO 'Y:\MSSQL\DATA\TempusDatabase.LDF'

Sett så COMPATIBILITY_LEVEL for databasen til det høyeste serveren støtter, men ikke høyere enn 2014, ref. https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level

ALTER DATABASE TempusDatabase SET COMPATIBILITY_LEVEL = 120


Til slutt oppretter vi en databasebruker, og setter denne som database owner:

CREATE LOGIN TempusBruker WITH PASSWORD = 'TempusPassord', DEFAULT_DATABASE = TempusDatabase

ALTER AUTHORIZATION ON DATABASE::TempusDatabase TO TempusBruker

Sette opp Tempus dgdb.ini-fil med ny serverinformasjon

I utgangspunktet ser dgdb.ini slik ut:

[DATABASE]
drivername=mssql
server name=
database name=
user name=
password=
; parameter ADKobling styrer om brukere i Tempus er koblet mot Windows-pålogging, ikke tilkobling til databasen
; ADKobling=1 deaktiverer brukernavn- og passord-feltene i pålogginsvinduet
ADKobling=0


Servernavn og evt. instans spesifiseres via parameter Server Name, på formatet Servernavn\Instans. Fyll ut databasenavn (Database Name), brukernavn (User Name) og passord (Password) med det som ble satt når databasen ble importert og brukeren ble opprettet. Parameter ADKobling settes til 1 hvis Windows autentisering er aktivert i Tempus (via systemparameter WindowsAutentisering)

[DATABASE]
drivername=mssql
server name=NYServer\SQLExpress
database name=TempusDatabase
user name=TempusBruker
password=TempusPassord
ADKobling=0