sqlcmd mint SSMS light

Itt ülök az MVP summiton, és kiderült, hogy még itt is van olyan ember, aki nem tudja, hogy az sqlcmd nagyon sokoldalú. Valaki felvetette az igényt egy SSMS lightra, ahogy ő fogalmazott,

“egy Notepad, ami tud SQL lekérdezést futtatni”.

Megmutattam neki, hogy ez már létezik. Úgy hívják, hogy sqlcmd. Ez az osql utódja, a command-line interface SQL Serverhez. Ha még nem tudná valaki, CLI-mániám van, pedig Windows-on szocializálódtam. Szóval nézzük a varázslatot: Nyissunk egy parancssort (cmd.exe vagy powershell), és pötyögjünk:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Erik>sqlcmd -E -S .\mysql
1> :ed
'edit.com' is not recognized as an internal or external command,
operable program or batch file.
1> exit

C:\Users\Erik>SET SQLCMDEDITOR=notepad

C:\Users\Erik>sqlcmd -E -S .\mysql
1> :ed
1> select top 3 name, database_id, recovery_model_desc
2> from
3> sys.databases
4> GO
name
         database_id recovery_model_desc
------------------------------------------------------------------------------------------------------------------------
-------- ----------- ------------------------------------------------------------
master
                   1 SIMPLE
tempdb
                   2 SIMPLE
model
                   3 FULL

(21 rows affected)
1> :ed
1> select top 3 cast(name as varchar(30)) name, database_id, recovery_model_desc
2> from
3> sys.databases
4> GO
name                           database_id recovery_model_desc
------------------------------ ----------- ------------------------------------------------------------
master                                   1 SIMPLE
tempdb                                   2 SIMPLE
model                                    3 FULL

(3 rows affected)
1> 

Mi történt? Létrehoztam egy kapcsolatot az SQL Serverhez (igen, mysql az instancename, mert én használom), majd megpróbáltam szerkeszteni egyet az :ed paranccsal, de hibát kaptam, mivel az edit.com nem volt elérhető a gépemen. Erre kiléptem, beállítottam a SQLCMDEDITOR környezeti változóban a Notepad nevű szövegszerkesztőt, majd megint nekiugrottam. Ami sajnos így nem látszik, az az, hogy a 13. sornál kinyílt a notepad egy üres fájllal. Belegépeltem a 14-16. sort, majd bezártam a notepadot, és elmentettem a fájlt, amikor kérdezte, hogy mi legyen. Erre a fájl tartalma megjelent a sqlcmd-ben. utánaírtam, hogy GO, aztán lefutott. Mivel az adatbázisnév sysname, ami 128 karakter hosszú, ezért rondán nézett ki a kimenet, úgyhogy megint azt mondtam, hogy :ed. Erre megjelent az előzőleg végrehajtott batch a notepadban, és átírtam a megfelelő 1 sort, hogy ne legyen beláthatatlanul hosszú az output. Bezár-ment, enter, ott az eredmény.

Konklúzió: ez az egyik legnagyobb találmány.

2 Comments

  1. zsorzs:

    Erik!
    Te olyan vagy mint a fény: egy csomagban adod le amit le tudsz adni… egyszerre 3 cikk , és mind érdekes…

  2. Erik:

    Köszönöm a kedves hasonlatot, a fényről mindig volt főnököm jut eszembe, aki a következő viccet átlag napi tízszer sütötte el:
    Te tudtad, hogy a fenyő másodpercenként 300000 km-t tud megtenni? Ja nem, a fény az.
    :)

Leave a comment