Nedgradera en SQL 2012 databas till SQL 2005

Jag stötte på ett riktigt krångligt SQL-problem idag. I vår utvecklingsmiljö hade vi använt oss utav SQL 2012 och i live-miljön fanns bara SQL 2005. Eftersom de nya SQL-versionerna inte har någon bakåtkompatibilitet gick det inte använda ”Back-up” och ”Restore” för att kopiera över utvecklingsdatabasen till live-miljön. Tyvärr stöds inte nedgraderingar mellan de olika SQL-versionerna och det finns inga automatiska funktioner för detta heller. Det kändes som att detta skulle bli ett omöjligt uppdrag.

Efter mycket felsökning och Googlande lyckades jag till slut hittade några tips om funktionen ”Generate scripts…”. Med hjälp utav den funktionen kan man skapa ett T-SQL skript för hela databasen och använda den till att generera nya databasen. Tyvärr var databasen så stor att när jag väl försökte läsa in skriptet till SQL 2005 fick jag ett felmeddelande om att minnet var slut.

cannotExecuteScript

Sedan hittade jag en funktion kallat SQLCMD som kan användas vid skriptandet av riktigt stora filer. Med hjälp av denna kunde jag till slut kopiera över databasen till SQL 2005.

Eftersom jag inte lyckades hitta ett ”komplett” tips tänkte jag skriva ner allt här istället. 🙂

I all sin korthet är det detta som måste göras:

  1. 1. Skapa en ny databas i SQL 2005
  2. 2. Generera ett skript på SQL 2012 med ”Generate script…”
  3. 3. Använd SQLCMD för att generera databasen till SQL 2005

Skapa en ny databas i SQL 2005

Inget konstigt här.
Logga in på SQL Server Management Studio för SQL 2005.
Högerklicka på Databases och klicka på New Database…
Ange ett namn för databasen och klicka sedan på OK. Inga fler ändringar behövs (lämna databasen tom).

Generera ett skript på SQL 2012 med ”Generate script…”

generateScripts

Logga in på SQL Server Management Studio för SQL 2012.
Högerklicka på databasen du vill kopiera och välj Tasks => Generate Scripts…

generateScripts1

En wizard startas. Klicka på Next.

generateScripts2

Kontrollera att Script entire database and all database objects är markerat. Klicka sedan på Next

generateScripts3

I det här steget kan du välja var skriptet ska sparas. Klicka på Advanced för att ändra utdataformat.

generateScripts4

Ändra Script for Server Version till SQL Server 2005 och Types of data to script till Scheme and data. Bekräfta med Ok. Klicka sedan på Next för att gå vidare.

generateScripts5

En bekräftelse på inställningarna visas. Klicka på Next för att generera skriptet.

Använd SQLCMD för att generera databasen till SQL 2005

Start kommandoprompten och klistra in följande kodsnutt

1
2
SQLCMD -S servernnamnFörSQL2005 -d databasnamn -i C:\skriptet.sql -E
--t.ex. SQLCMD -S OT1LAP03A95A\SQLEXPRESS -d db_episerver -i C:\script.sql -E
sqlcmd

När skriptet är klart visas Processed XXXX total records och nu borde databasen vara kopierad.

Force restore on MsSql database

No exclusive access to database

No exclusive access to database

You’re trying to restore a database in SQL Server Management Studion using the UI and you get an error message

Exclusive access cound not be obtained because the database is in use.

This means that some process is still using the database and can therefore not be altered. There is no way getting around this using the UI. The only way to force the restore of the database is to use an SQL query.

In the query we start by setting the database in single user mode – now the database can only be accessed by one user/process at time. When this is done we can alter the database anyway we like. Don’t forget to add WITH REPLACE at the end of the query in order to force a replace on the database. You can find an example below.

1
2
3
4
5
6
7
USE master
GO
ALTER DATABASE databasename SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE databasename FROM DISK = 'D:\data\SQL\Backup\databasename.bak'
WITH REPLACE
GO

Regex exempel

E-postadress (epostadress@doman.com): @^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$ Svenskt mobilnummer (070-1234567): @”^[0]{1}[7]{1}[0,2,3,6,9]{1}-[0-9]{7}$” Svenskt personnummer (ååååmmdd-nnnn): @”^[12]{1}[90]{1}[0-9]{6}-[0-9]{4}$”

WordPress klipp och klistra

Nedan finner du några bra snippets för WordPress. 12//Hämta bild url <img src="<?php echo get_template_directory_uri();?>/images/logo.png" alt="Logo">

Komplett metadata?

Jag har försökt saxa ihop en komplett lista på metadata som ska finnas på alla moderna webbplatser. 12345678910111213141516<meta name="description" content="" /> <link rel="author" href="https://plus.google.com/[din kod]/" /> <!– Open Graph metadata –> <meta property="og:title" content="" /> <meta property="og:type" content="[website/article]" /> <meta property="og:image" content="" /> <meta property="og:url" content="" /> <meta property="og:description" content="" /> <!– Twitter –> <meta […]

Aktivera cachning av blobs i EPiServer

Lägg till följande i web.config för att aktivera cachningen av alla mediafiler som kommer från EPiServer (Blobs). 123456<configuration>     <configSections>         <section name="staticFile" type="EPiServer.Framework.Configuration.StaticFileSection" />     </configSections> </configuration> <staticFile expirationTime="365.0:0:0" />

EPiServer 7.5 – Klipp och klistra

Nedan följer några bra klipp och klistra kodsnuttar för EPiServer 7.5. 1234/*  Tvinga användaren att endast kunna välja en viss sidtyp som ContentReference */ [Display(GroupName = SystemTabNames.Content, Order = 400)] [AllowedTypes(typeof(ProducerPage))] public virtual ContentReference ProducerPage { get; set; }