C# - Transact SQL további belső változói

Transact SQL 2. rész

forráskód letöltése
Sorozatunk második részében további változók tulajdonságaival, felhasználási lehetőségeivel ismerkedhetünk meg.
01.sql: @@CPU_BUSY
A változó segítségével meghatározható a CPU aktivitása egy-egy művelet alatt. Az eredményt ezredmásodpercben kapjuk.
Változó típusa: integer
SELECT @@CPU_BUSY AS 'CPU ms', EmployeeID, count(EmployeeID) AS 'Count' From Orders Group by EmployeeID
02.sql: @@MAX_PRECISION
A decimal és numeric típusú adatok esetén megadható maximális precizitás mértéke olvasható ki a változóból.
Változó típusa: tinyint
SELECT @@MAX_PRECISION as 'Precizitás'
Alábbi táblázat összefoglalja, hogy egy adott precizitás esetén hány bájt szükséges az adott szám tárolásához.
Precizitás Tároláshoz szükséges bájtok
1 - 9 5
10-19 9
20-28 13
29-38 17
03.sql: @@NESTLEVEL
E példa kipróbálása előtt hozzuk létre a Northwind adatbázisba a két alábbi tárolt eljárást:
CREATE PROCEDURE proc1 
as
select @@NESTLEVEL
exec proc2
GO
CREATE PROCEDURE proc2
as
select @@NESTLEVEL
GO
A NESTLEVEL változó segítségével meghatározható hogy a tárolt eljárásokban milyen mélységig vagyunk benne. Az alapszint értéke nulla. Ha meghívunk egy tárolt eljárást, akkor a NESTLEVEL változó értéke 1 lesz. Ha ez a tárolt eljárás meghív egy másikat, akkor a NESTLEVEL változó értéke már 2 lesz. Ha lefut a második tárolt eljárás, akkor nyilván az elsőre kerül vissza a vezérlés és ott folytatódik, ekkor a NESTLEVEL változó értéke visszaáll 1-re.
Változó típusa: integer
EXECUTE proc1
04.sql: @@ OPTIONS
A változónak az egyes bitjei tárolják az értékes információt. Minden bit egy-egy tulajdonságot befolyásol. Az alábbi táblázatban látható, hogy melyik bit mire szolgál.
Változó típusa: integer
select @@OPTIONS
Egy-egy bitet beállítani, vagy kikapcsolni a SET paranccsal tudunk:
SET ANSI_WARNINGS ON
Ha ellenőriznünk kell, hogy egy bit beállított-e vagy sem, akkor ezt az alábbiak szerint tehetjük meg, például az ANSI_NULLS bit ellenőrzése:
IF @@OPTIONS & 32 > 0
  …
Bitek jelentése:
Bit Jelentése
1 DISABLE_DEF_CNST_CHK
2 IMPLICIT_TRANSACTIONS
4 CURSOR_CLOSE_ON_COMMIT
8 ANSI_WARNINGS
16 ANSI_PADDING
32 ANSI_NULLS
64 ARITHABORT
128 ARITHIGNORE
256 QUOTED_IDENTIFIER
512 NOCOUNT
1024 ANSI_NULL_DFLT_ON
2048 ANSI_NULL_DFLT_OFF
4096 CONCAT_NULL_YIELDS_NULL
8192 NUMERIC_ROUNDABORT
16384 XACT_ABORT
05.sql: @@PACK_RECEIVED, @@PACK_SENT, @@PACKET_ERRORS, @@TOTAL_READ, @@TOTAL_WRITE, @@TOTAL_ERRORS
  • PACK_RECEIVED - fogadott csomagok száma
  • PACK_SENT - elküldött csomagok száma
  • PACKET_ERRORS - hibás csomagok száma
  • TOTAL_READ - összes olvasások száma
  • TOTAL_WRITE - összes írások száma
  • TOTAL_ERRORS - összes hibák száma
Változók típusa: integer
SELECT @@PACK_RECEIVED as 'Fogadott csomagok száma', @@PACK_SENT as 'Elküldött csomagok száma', @@PACKET_ERRORS as 'Hibás csomagok száma', @@TOTAL_READ as 'Olvasások száma', @@TOTAL_WRITE as 'Írások száma', @@TOTAL_ERRORS as 'Hibák száma' 
06.sql: @@PROCID
E példa kipróbálása előtt hozzuk létre a Northwind adatbázisba az alábbi tárolt eljárást:
CREATE PROCEDURE proc3 AS
SELECT @@PROCID AS 'Procedure Identifier'
go
A PROCID változón keresztül lekérdezhetjük az aktuális tárolt eljárás egyedi azonosítóját.
Változó típusa: integer
EXEC proc3
07.sql: @@ROWCOUNT
A ROWCOUNT változó értékéből megtudhatjuk, hogy a legutoljára végrehajtott utasítás az adott táblában hány sort érintett.
Változó típusa: integer
UPDATE Customers SET CompanyName = 'Animare Software' WHERE (CustomerID = 'AS')
select @@rowcount as 'Módosult sorok száma'
08.sql: @@SERVERNAME, @@SERVICENAME, @@SPID, @@VERSION
SERVERNAME változóból megtudhatjuk, a szerver nevét. Változó típusa: nvarchar
SERVICENAME változóból a szerviz neve derül ki (pl.:MSSQLSERVER). Változó típusa: nvarchar
SPID a bejelentkezett felhasználó azonosító száma. Változó típusa: smallint
VERSION az SQL szerver verziója, melyből megtudhatjuk azt is, hogy milyen operációs rendszeren fut (pl.: Microsoft SQL Server 2000 - 8.00.384 (Intel X86) May 23 2001 00:02:52 Copyright (c) 1988-2000 Microsoft Corporation Developer Edition on Windows NT 5.0 (Build 2195: Service Pack 2)). Változó típusa: nvarchar
SELECT @@SERVERNAME as 'Szerver név', @@SERVICENAME as 'Szerviz név', @@SPID as 'Felhasználó ID', @@VERSION as 'Szerver verzió'
Ha részletesebb verzió információkra vagyunk kíváncsiak, akkor futtassuk a következő tárolt eljárást:
use master
exec xp_msver
09.sql: @@TEXTSIZE
A változóból kiolvashatjuk, hogy a Text, illetve az Image típusú mezők maximum hány bájtnyi adatot adnak vissza egy Select lekérdezés során.
Változó típusa: integer
SELECT @@TEXTSIZE as 'Text, Image max. mérete bájtban'
Ennek mértékét a SET utasítással állíthatjuk:
SET TEXTSIZE 8192
10.sql: @@TIMETICKS
A TIMETICKS egy számítógépenként változó érték, mely az adott hardvertől függ. Ez határozza meg, hogy egy ezredmásodperc egy órajel. Általában az értéke 31.25.
Változó típusa: integer
SELECT @@TIMETICKS

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész

Transact SQL további belső változói - Transact SQL 2. rész

Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész
Adatkonvertálási lehetőségek - Transact SQL 12. rész
Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész