Pēdējās nedēļās tā vairāk sanācis nodarboties ar ātrdarbības lietām. Šeit neliels sausais atlikums un daži padomi, kas var noderēt dzīvē.
piektdiena, 2014. gada 6. jūnijs
trešdiena, 2014. gada 4. jūnijs
Parametra deklarēšana cikla iekšienē
Šāds T-SQL vaicājums (orģinālā mainīgie kursora iekšienē):
declare @i int = 0
while @i < 5
begin
declare @a int;
declare @b int;
Set @a = @i;
if @i <= 2
Set @b = @a;
select @i i, @a a, @b b;
Set @i+=1;
end
Kādas būs vērtības @b parametram tad, kad @i > 2? Es biju iedomājies, ka Null, bet nekā, lai arī parametra deklarēšana notiek cikla iekšienē, tas joprojām būs 2 (Null tikai pirms pirmreizējas vērtības piešķiršanas).
Starp citu, arī šāds vaicājums nestrādās, lai uz pirmo acu uzmetienu liekas visai korekts (nevar deklarēt divās vietās viena bach ietvaros):
declare @x int = -1;
if(@x>0)
begin
Declare @j int = 5
end
else
begin
Declare @j int = -5
end
Lai nu kā, parametrus rekomendē deklarēt procedūras/vaicājuma sākumā. Šis ir viens no iemesliem kāpēc tā.
declare @i int = 0
while @i < 5
begin
declare @a int;
declare @b int;
Set @a = @i;
if @i <= 2
Set @b = @a;
select @i i, @a a, @b b;
Set @i+=1;
end
Kādas būs vērtības @b parametram tad, kad @i > 2? Es biju iedomājies, ka Null, bet nekā, lai arī parametra deklarēšana notiek cikla iekšienē, tas joprojām būs 2 (Null tikai pirms pirmreizējas vērtības piešķiršanas).
Starp citu, arī šāds vaicājums nestrādās, lai uz pirmo acu uzmetienu liekas visai korekts (nevar deklarēt divās vietās viena bach ietvaros):
declare @x int = -1;
if(@x>0)
begin
Declare @j int = 5
end
else
begin
Declare @j int = -5
end
Lai nu kā, parametrus rekomendē deklarēt procedūras/vaicājuma sākumā. Šis ir viens no iemesliem kāpēc tā.
ceturtdiena, 2014. gada 29. maijs
Rezerves kopijas
Rezerves kopiju veidošana un atjaunošana no tām ir viena no svarīgākajām, ja ne svarīgākā lieta, ko jāzina SQL Server administratoram. Šis kopsavilkuma raksts par būtiskām, ar rezerves kopiju veidošanu saistītajām, lietām SQL Server.
ceturtdiena, 2014. gada 6. februāris
Datu apskatīšana/saglabāšana no nvarchar(max) kolonas
Iedvesmojoties no vakardienas twīta:
SQL Server – Retrieve All the Data from VARCHAR(MAX) Column http://t.co/GsMNK3WNDg
— Database Friends (@DatabaseFriends) February 5, 2014
Ja ir varchar/nvarchar/xml utt kolonna, kurā ir daudz dati, tad kolonnas saturu SSMS nevar apskatīt (te gan jāsaka ka jaunākām SSMS versijām sanāk daudz labāk, bet joprojām ne gana labi).
Risinājums ir datus eksportēt uz failu. Savā variantā izmantoju komandvirkni (cmd.exe) un utilītprogrammu bcp (msdn plašāk).
Komandrinda, ko vajadzības gadījumā pielāgoju:
bcp "select cast(LAUKS as nvarchar(max)) from ManaTabula with (nolock) where RindasID = ID" queryout "c:\Mape\Rez.txt" -S ServeraVards -U LietotajaVards -P Parole -d DatuBaze -w
Ja slēdzos datu bāzei klāt ar Windows autentifikāciju, tad šādi:
bcp "select cast(LAUKS as nvarchar(max)) from ManaTabula with (nolock) where RindasID = ID" queryout "c:\Mape\Rez.txt" -S ServeraVards -d DatuBaze -T -wŠis strādā ātri un nav problēmu, ja lauka garums ir pārdesmit megabaiti.
Abonēt:
Ziņas (Atom)