Microsoft SQL Local DB

După ce m-am jucat un pic cu SQLite, mi-am zis să mă întorc la SQL Server cu care sunt mai obișnuit. Bă, frate, dar mi-era o mare lene să instalez ditamai SQL Server Express cu Management Console… Plus că ocupă cu totul peste 1 GB din spațiul și-așa prețios al SSD-ului.

Bifa necesară ca să instalezi SQL Server Express LocalDB odată cu Visual Studio 2015
Bifa necesară ca să instalezi SQL Server Express LocalDB odată cu Visual Studio 2015

Mi-am amintit că Visual Studio obișnuia să instaleze implicit un SQL Server Express. Ei bine, se pare că Visual Studio 2015 Community de acum nu mai instalează chiar toată ediția gratuită Express, ci un frățior mai mic al lui, SQL Server Express LocalDB – ăsta face cam aceleași lucruri, dar cred că ocupă doar vreo 250 MB cu dependințele lui. LocalDB e instalat numai dacă bifezi Microsoft SQL Server Data Tools în timpul instalării Visual Studio (eu a trebuit să dau Change pe Visual Studio din Control Panel la Programs, Programs and Features).

În fine, odată ce-am avut SQL Server LocalDB instalat pe sistem, am început să dau de niște probleme: eu eram obișnuit cu SQL Server Management Console ca să atașez/detașez bazele de date, să fac restaurare dintr-un backup etc. Dar cum lucrezi cu LocalDB?

Visual Studio se pare că dă drumul singur unei instanțe de SQL Server Local DB. Cum am dat de ea? Deschid Visual Studio, meniu, View, SQL Server Object Explorer, expandezi SQL Server. Cu click-dreapta pe instanța (localdb)\MSSQLLocalDB poți porni un New Query… ca să vorbești cu serverul.

Ca o paranteză, există și un mic instrument numit SqlLocalDB.exe cu ajutorul căruia poți manipula trebile. De exemplu, poți da drumul unei noi instanțe de SQL Server Express LocalDB. Documentația SqlLocalDB e pe MSDN. Implicit, SqlLocalDB.exe se pune pe disk:

C:\Program Files\Microsoft SQL Server\120\Tools\Binn

Captură ecran SqlLocalDB.exeBuuun… Acum că am serverul, cum manipulez bazele de date?

Se pare că SQL Server Object Explorer din Visual Studio nu este la fel de puternic ca SQL Server Management Console. Nici pe departe. Multe din operații se fac cu comenzi Transact-SQL. Sigur, crearea unei noi baze de date este simplă, dar atașarea uneia existente e mai complicată.

M-am dus pe CodePlex.com să găsesc bazele de date Northwind și AdventureWorks – ambele sunt baze de date exemplu, făcute pentru experimentări sau training. Am descărcat și am pus și eu fișierele bak la

D:\Database\Backup\

Apoi, într-o fereastră de query din Visual Studio… (ziceam mai devreme: cu click-dreapta pe instanța (localdb)\MSSQLLocalDB afișată în SQL Server Object Explorer, poți porni un New Query… ca să vorbești cu serverul):

RESTORE FILELISTONLY FROM DISK = 'D:\Database\Backup\Northwind.bak'

Aflu care sunt fișierele logice ale bazei de date și unde se așteaptă serverul să găsească fișierele fizice pentru ele. Cum însă eu nu voi pune fișierele fizice tot acolo…

RESTORE DATABASE Northwind
  FROM DISK = 'D:\Database\Backup\Northwind.bak'
    WITH
      MOVE 'Northwind' TO 'D:\Database\Northwind.mdf',
      MOVE 'Northwind_log' TO 'D:\Database\Northwind.ldf'

Baza de date Nothwind a fost făcută pentru o versiune mai veche de SQL Server, așa că se face și un upgrade al ei, nu doar restore din backup…Fereastra SQL Query cu RESTORE la Northwind

Iar dup-acum, treaba mi-e deja familiară:

USE Northwind    -- Intrăm în baza de date Northwind
go
SELECT * FROM Customers    -- Listăm dintr-o tabelă
go

Îmi lipsește acum doar un string de conectare la baza de date, pe care să-l folosesc în aplicația mea. Dacă dau click-dreapta pe baza de date și aleg Properties, găsesc și un Connection string de genul…

Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

Însă uneori ăsta trebuie schimbat – trebuie să-i spui serverului să atașeze baza de date din fișierele e fizice de date și log (fișierele .mdf și .ldf) la pornirea aplicației. Aici însă, dau de niște probleme cu drepturile de acces. Poate o lămuresc într-o postare mai târziu.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s