Šajā rakstā apskatīti daži špikerīši šīs utilītprogrammas izmantošanai- sākumā kā laist no komandvirknes, kā sqlcmd izmantot (pārbaudīt) no komandvirknes un SSMS un arī neliels skripts datu bāzes automatizētai izveidei.
Uz datora jābūt uzstādītam SQL Server vai SQL Server klienta rīkiem (instalējot SSMS tiek automātiski instalēts arī sqlcmd), vai arī jāuzstāda komandvirknes utilītprogramma (no Microsoft® SQL Server® 2008 R2 SP1 Feature Pack, fails "SqlCmdLnUtils.msi").
MSDN sqlcmd izmantošanas piemēri atrodami sqlcmd How-To Topics.
sqlcmd palaišana no komandvirknes
Lai pieslēgots lokālajai instancei izmantojot windows autentifikāciju, pietiek komandvirknē ievadīt "sqlcmd" un nospiest Enter. Bet nu šķiet praksē biežāk notiek pieslēgšanās citai instancei. Sintakse šādā gadījumā ir reģistrjūtīga:
sqlcmd -S ServerName -U UserName -P UserPasswordizskatās šādi:
Nenorādot lietotāja vārdu un paroli, notiek pieslēgšanās izmantojot Windows autentifikāciju. Windows autentifikācija ir rekomendētais veids, kā pieslēgties SQL Serverim.
Pēc pieslēgšanās serverim, ir iespējams ievadīt SQL komandas, kas tiek izpildītas pēc "go" komandas ievades (nevis Enter taustiņa nospiešanas) - skatīt nākamo sadaļu "sqlcmd izmantošana no komandvirknes".
Vēl daži no vērtīgākajiem norādāmajiem sqlcmd parametriem ir -b, -m, -q, -Q, -i un -o (* īss apraksts raksta pašās beigās).
Pieslēgties serverim izmantojot windows autentifikāciju un izpildīt vaicājumu un izvadīt rezultātus komandvirknē un iziet no sqlcmd:
sqlcmd -S ServerName -Q "select 1"Izpildīt visus skriptus no my.sql faila un izvadīt rezultātus results.txt:
sqlcmd -S evk-sql -i c:\test\my.sql -o c:\test\results.txt
sqlcmd izmantošana no komandvirknes
Iepriekšējā sadaļā (sqlcmd palaišana no komandvirknes) aprakstīju, kā palaist sqlcmd, kā palaist skriptus gan no faila, gan pa tiešo ievadot sqlcmd vidē un kā izvadīt rezultātus failā.
sqlcmd utilītprogrammā var izpildīt jebkuru T-SQL vaicājumu. Droši vien ir noderīgi zināt, ka atšķirībā no SSMS, sqlcmd var apstrādāt ļoti lielus failus (piemēram, datu importam vai datu bāzes objektu izveidei).
sqlcmd bez T-SQL ir pieejamas papildus komandas. Ļoti nozīmīga ir iespēja izmantot mainīgos, iespēja norādīt un izpildīt citus T-SQL failus.
lai izveidotu temporālu tabulu, ievietotu tajā vērtību, atlasītu datus un dzēstu izveidoto tabulu, es sqlcmd varu ievadīt šādu komandu:
:setvar myTable tempTableŠajā skriptā [$(myTable)] ir mainīgais, kam sākumā izmantojot speciālo komandu [:setvar] tiek uzstādīta vērtība [tempTable]. tas izskatās šādi (konekcija uz lokālo serveri ar Windows autentifikācija):
Go
Create Table #$(myTable)(i int);
insert into #$(myTable)(i)values(1)
Select * From #$(myTable);
Drop Table #$(myTable)
Uz SQL Server tika izpildīta šāda komanda (mainīgais aizstāts ar vērtību pirms izpildes):
Create Table #tempTable(i int);Lai nu kā, svarīgākais- sqlcmd vidē ir pieejamas papildus komandas. Plašākus aprakstus var lasīt sqlcmd dokumentācijā. Sakarīgs izmantošanas piemērs būs redzama zemāk- "Datu bāzes uzstādīšana, izmantojot sqlcmd".
insert into #tempTable(i)values(1)
Select * From #tempTable;
Drop Table #tempTable
sqlcmd izmantošana no SSMS
Kā jau minēts, sqlcmd skriptos var iekļaut mainīgos un speciālas komandas, kas nav T-SQL kods. Lai varētu vieglāk notestēt, var izmantot SSMS iespēju izpildīt vaicājumus gluži kā no sqlcmd komandvirknes. Lai to izdarītu, jāiet Query -> SQLCMD Mode:
Šo iespēju vērtīgi izmantot testējot sqlcmd skriptu. Izskatās šādi:
Automatizēta datu bāzes uzstādīšana, izmantojot sqlcmd
Šeit aprakstīta datu bāzes automatizēta uzstādīšana izmantojot sqlcmd utilītprogrammu. Piemērā tiek izmantoti vairāki faili, dots to pilns teksts.
Šos failus var arī lejupielādēt- AutomatizetasDBInstalacijasPiemers.zip.
Install.bat fails- var redzēt, kā notiek interaktīva parametru uzstādīšana (no kuriem parametrs db tiek izmantoti citos failos), IF nosacījumu pārbaude, kļūdu pārbaude. Instalācijas vadībai tiek izmantots fails Setup.sql fails:
@echo offSetup.sql sql fails, kurā tiek izmantotas arī sqlcmd speciālās komandas. Tiek izsaukts fails "Variables.sql" (:r komanda un tai sekojošs faila nosaukums. izmantojot sqlcmd mode no SSMS ir jānorāda pilns ceļš līdz failam), kurā ir sadefinēti uzstādīšanas laikā nepieciešamie mainīgie (šajā gadījumā gan tie nav vajadzīgi, tāpēc tur nekā nopietna nav). Tiek veiktas dažas pārbaudes un kļūdas gadījumā instalācija tiek pārtraukta (-b parametrs sqlcmd utilītprogrammai)
cls
set laist=n
set /p server="SQL Servera instance: " %=%
set /p db="Datu baze: " %=%
set /p laist="Vai veidot [%db%] uz instances [%server%]? ("Y" lai turpinatu): " %=%
IF [%laist%] == [Y] GOTO Instal
IF [%laist%] == [y] GOTO Instal
Echo Instalacija atcelta
pause
Exit
:Instal
Echo notiek instalacija.. %server%, %db%
sqlcmd -S %server% -v db=%db% -i Setup.sql -b
IF ERRORLEVEL = 1 GOTO ERROR
echo ======================
echo Uzstadisana veiksmiga!
pause
Exit
:ERROR
echo ===============================
echo Uzstadisanas laika radas kluda!
pause
exit
set nocount on;Variables.sql failā tiek uzstādīti mainīgie. Te ideja tāda, ka pēc parametru uzstādīšanas, to vērtības var izmantot visos pārējos failos.
:r Variables.sql
IF(IS_SRVROLEMEMBER ('sysadmin') = 0)
RAISERROR ('Jums nav pietiekamas tiesības (jābūt sysadmin)!', 16, 11);
IF (DB_ID('$(DB)') > 0)
RAISERROR ('$(DB) datu bāze jau ir izveidota!', 16, 11);
Go
:r Script.sql
Go
:setvar dummyParam "Hello world!"Script.sql failā ir pati datu bāzes, tabulas izveide un datu ievietošana. Papildinot Setup.sql tādi skripti var būt tik daudz, cik daudz vien ir vēlme izmantot.
print 'Failā varibables.sql uzstādīju dummyParam = $(dummyParam)'
Create Database $(db)Un izmantošana notiek laižot failu "Install.bat".
print 'datu bāze [$(db)] ir izveidota!'
Go
Use $(db)
Go
Create Table dbo.MyTable(i int);
insert into dbo.MyTable(i) values(1)
Select * From dbo.MyTable;
Go
Atcelta instalācija:
Neiziet validāciju:
Veiksmīga insalācija:
* -b, -m, -q, -Q, -i un -o, -v īss apraksts
- -b nozīmē, ka notiekot kļūdai tiek iziets no sqlcmd un tālākā SQL komandu izpilde nenotiek.
- -m var konfigurēt, no kura līmeņa kļūdas izvadīt rezultātos. piemēram, [-m 10] nozīmē, ka informatīvie paziņojumi netiks izvadīti (piemēram, print komandas ziņojumi).
- -q izmanto, lai izpildītu vaicājumu un paliktu sqlcmd vidē. Piemēram ['-q "select 1"]
- -Q izmanto, lai izpildītu vaicājumu un paliktu sqlcmd vidē. Piemēram ['-Q "select 1"]
- -i izmanto, lai izpildītu vaicājumus no norādītā faila. Piemēram [-i c:\test\my.sql]
- -o izmanto, lai izvadītu vaicājuma rezultātus vailā. Piemēram [-o c:\test\results.txt]
- -v izmanto, lai uzstādītu mainīgā vērtību. Piemēram [-v myTable=tempTable]
Nav komentāru:
Ierakstīt komentāru