Welcome to Our Website

SQLShack (Magyar)

nagyon hasznos, hogy tárolja az adatokat SQL Server temp táblázatok helyett manipulálni vagy dolgozni állandó táblázatok. Tegyük fel, hogy teljes DDL vagy DML hozzáférést szeretne egy asztalhoz, de nincs meg. Használhatja a meglévő olvasási hozzáférést, hogy húzza az adatokat egy SQL Server ideiglenes tábla, majd módosítsa onnan. Vagy nincs jogosultsága tábla létrehozásához a meglévő adatbázisban, létrehozhat egy SQL Server temp táblát, amelyet manipulálhat., Végül előfordulhat, hogy olyan helyzetben van, amikor az adatoknak csak az aktuális munkamenetben kell megjelenniük.

az SQL Server néhány típusú SQL Server temp táblát támogat, amelyek nagyon hasznosak lehetnek.

mielőtt folytatnánk, ha bármilyen kódmintát követni szeretne, javaslom az SQL Server Management Studio megnyitását:

helyi SQL temp táblák

helyi SQL Server temp táblázatok jönnek létre a font szimbólum vagy a “hashtag”, amelyet a táblázat neve követ. Például: # Table_name. SQL temp táblák jönnek létre a tempdb adatbázisban., A helyi SQL Server temp tábla csak az aktuális munkamenethez látható. Nem lehet látni vagy használni folyamatok vagy lekérdezések kívül a munkamenet deklarált.

itt egy gyors példa arra, hogy egy eredményhalmazt egy SQL Server temp táblába helyezünk.

az SQL Server temp táblázatok egyik leggyakrabban használt forgatókönyve valamilyen hurokon belül van. Például egy SQL-utasítás adatait szeretné feldolgozni, ezért szüksége van egy helyre az elemek tárolásához, hogy a hurok átolvasható legyen. Ehhez gyors és hatékony eszközöket biztosít., Lásd a fenti kódmintát, a hurok most hivatkozhat az SQL Server temp táblára, és feldolgozhatja azokat a rekordokat, amelyek megfelelnek a cél kritériumainak.

Az SQL Server temp táblák használatának másik oka az, hogy van néhány igényes feldolgozás az sql-utasításban. Tegyük fel, hogy létrehoz egy join, és minden alkalommal, amikor meg kell húzni rekordokat, hogy az eredmény meg kell feldolgozni ezt csatlakozzon újra. Miért nem dolgozza fel ezt az eredményt egyszer, majd dobja a rekordokat egy SQL temp táblába? Ezután az SQL utasítás többi része hivatkozhat az SQL temp tábla nevére., Ez nem csak a drága lekérdezés-feldolgozást takarítja meg, hanem a kódot is kissé tisztábbá teheti.

van egy pont, amit szeretnék tenni. Ha a munkamenetben, amelyben dolgozunk, további beágyazott munkamenetek vannak, akkor az SQL Server temp táblázatok a hierarchiában alacsonyabb, de a hierarchiában nem magasabb munkamenetekben láthatók. Kérem, engedje meg, hogy ezt vizualizáljam.

ebben a gyors diagramban egy SQL temp táblázat jön létre a 2. munkamenetben. Az alatta lévő munkamenetek (sessions 3 and session 4) képesek látni az SQL Server temp táblát., De az 1. munkamenet, amely a 2. munkamenet felett van, nem fogja látni az SQL Server temp táblát.

az SQL temp táblázat leesik vagy megsemmisül, ha a munkamenet megszakad. Sokszor látni fogja, hogy a fejlesztők a nyilatkozat végén a “DROP # Table_Name” parancsot használják csak a tisztításhoz. De ez teljesen rajtad múlik, és hogy mit próbál elérni.,

azt is vegye figyelembe, hogy névkonfliktus esetén (ne feledje, hogy az SQL Server temp táblákat a tempdb-ben hozták létre) az SQL server utótagot csatol a táblázat nevének végéhez, hogy egyedi legyen a tempdb adatbázisban. De ez a folyamat átlátható a fejlesztő/felhasználó számára. Ugyanazt a nevet használhatja, amit bejelentett, mivel arra a munkamenetre korlátozódik.

Global SQL temp tables

Global SQL temp tables akkor hasznos, ha azt szeretné, hogy az eredményhalmaz látható legyen az összes többi munkamenetben. Nem kell beállítania az engedélyeket., Bárki beillesztheti az értékeket, módosíthatja vagy lekérheti a rekordokat a táblázatból. Azt is vegye figyelembe, hogy bárki leeshet az asztalra. A helyi SQL Server temp táblákhoz hasonlóan a munkamenet megszakítása után is leesik, és már nincs több hivatkozás a táblára. Mindig használhatja a” DROP ” parancsot a kézi tisztításhoz. Amit én javasolnék.

globális SQL temp tábla létrehozásához egyszerűen két font szimbólumot használ a táblázat neve előtt. Példa: # # Global_Table_Name.,

táblázat változók

táblázat változók jönnek létre, mint bármely más változó, a deklarálni nyilatkozatot. Sokan úgy vélik, hogy a táblázatváltozók csak a memóriában léteznek, de ez egyszerűen nem igaz. Ezek tartózkodnak a tempdb adatbázis ugyanúgy, mint a helyi SQL Server temp táblák. A helyi SQL temp táblákhoz hasonlóan a táblázatváltozók csak az azokat létrehozó munkameneten belül érhetők el. Az SQL temp táblákkal ellentétben azonban a táblázat változó csak az aktuális tételen belül érhető el. Ezek nem láthatók a tételen kívül, ami azt jelenti, hogy a munkamenet-hierarchia fogalmát kissé figyelmen kívül lehet hagyni.,

ami a teljesítményt illeti, a táblázatos változók kis mennyiségű adatokkal (például csak néhány sorral) hasznosak. Ellenkező esetben egy SQL Server temp tábla hasznos, ha szitálás keresztül nagy mennyiségű adatot. Tehát a legtöbb szkript esetében valószínűleg látni fogja az SQL Server temp tábla használatát, szemben a táblázatváltozóval. Nem azt mondom, hogy az egyik hasznosabb, mint a másik, csak ki kell választania a megfelelő eszközt a munkához.

itt egy gyors példa a táblázat változó beállítására és használatára.,

létrehoztunk egy táblázatváltozót, amely információkat tartalmaz egy adott eladott termék teljes mennyiségéről. Ez egy nagyon egyszerűsített példa, és nem használnánk, ha sok sort tartalmazna. De ha csak néhány terméket nézünk, ez nagyon jól sikerült. Miután a táblázat változó lakott akkor majd csatlakozzanak ehhez a táblázathoz, hogy még egy táblázatot, és gyűjtsön bármilyen információt, amire szüksége van. Tehát van egy csomó rugalmasságot, és lehetővé teszi a fejlesztő, hogy elég kreatív.

végső soron a táblázat változóin végzett tranzakciók tekintetében is., Ha egy fejlesztő visszavált egy olyan tranzakciót, amely tartalmazza a táblázatváltozók változásait, akkor az adott tranzakción belül a táblázatváltozók módosításai érintetlenek maradnak. Ez azt jelenti, hogy a szóban forgó tranzakció más részeit visszaforgatják, de bármi, ami a táblázat változójára utal, nem fog, kivéve, ha a szkript ezen része hibás.,

  • Szerző
  • Utolsó Hozzászólás
Aamir egy SQL Server Adatbázis-Adminisztrátor a NYC/NJ terület (pedig nemrég vett egy szerepet, mint egy Adatbázis Fejlesztő).
informatikai karrierjét a helpdesk world-ben kezdte, majd végül a dolgok hálózati/rendszergazdai oldalára költözött. Egy idő után az adatbázisokkal (elsősorban az SQL Serverrel) való együttműködés iránti szeretetét fejlesztette ki, és az elmúlt nyolc évben erre összpontosította karrierjét., Különböző iparágakban dolgozott mind nagy, mind kis környezetben, mind különböző igényekkel.
SQL Shack lehetőséget adott neki, hogy hozzájáruljon egy olyan közösséghez, amely az évek során annyit adott neki.,
összes Megtekintése hozzászólások Aamir Syed

Legújabb hozzászólások Aamir Szaid (minden)
  • Az SQL Server Mindig Titkosított, az érzékeny adatok titkosítás, igaz a környezet – július 27, 2018
  • használati esetek a Lekérdezés Áruház az SQL Server – július 18, 2018
  • Ha Használja az SQL Ideiglenes Táblák vs Táblázat Változók – február 21, 2017

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük