To je velmi výhodné pro ukládání dat v SQL Server temp tabulky, spíše než manipulovat či pracovat s trvalým tabulky. Řekněme, že chcete plný přístup DDL nebo DML ke stolu, ale nemáte ho. Stávající přístup ke čtení můžete použít k vytažení dat do dočasné tabulky serveru SQL Server a odtud provést úpravy. Nebo nemáte oprávnění k vytvoření tabulky ve stávající databázi, můžete vytvořit tabulku temp serveru SQL, se kterou můžete manipulovat., Nakonec byste mohli být v situaci, kdy potřebujete, aby data byla viditelná pouze v aktuální relaci.
SQL Server podporuje několik typů SQL Server temp tabulek, které mohou být velmi užitečné.
Než budeme pokračovat, pokud chcete sledovat spolu s jakýmkoli ukázky kódu, navrhuji otevření SQL Server Management Studio:
Místní SQL temp tabulky
Místní SQL Server temp tabulky jsou vytvořeny pomocí libra symbol nebo „hashtag“, za nímž následuje název tabulky. Například: # Table_name. Tabulky SQL temp jsou vytvořeny v databázi tempdb., Lokální tabulka temp serveru SQL Server je viditelná pouze pro aktuální relaci. Procesy nebo dotazy mimo relaci, ve které je deklarována, ji nelze vidět ani používat.
zde je rychlý příklad přijetí sady výsledků a vložení do tabulky temp serveru SQL Server.
jeden z nejčastěji používaných scénářů pro tabulky temp SQL Serveru je v nějaké smyčce. Chcete například zpracovávat data pro příkaz SQL a potřebujete místo pro uložení položek, které vaše smyčka přečte. Poskytuje rychlé a efektivní prostředky k tomu., Podívejte se na ukázku kódu výše, vaše smyčka nyní může odkazovat na tabulku temp serveru SQL a zpracovávat záznamy, které splňují kritéria vašeho cíle.
dalším důvodem pro použití tabulek temp serveru SQL Server je, že máte ve svém příkazu sql nějaké náročné zpracování. Řekněme, že vytvoříte spojení a pokaždé, když potřebujete vytáhnout záznamy z této sady výsledků, musí toto spojení znovu zpracovat. Proč ne jen zpracovat tento výsledek nastavit jednou a hodit záznamy do tabulky SQL temp? Pak můžete mít zbytek příkazu sql odkazovat na název tabulky SQL temp., Nejen, že to ušetří drahé zpracování dotazů, ale může dokonce způsobit, že váš kód bude vypadat trochu čistší.
existuje jeden bod, který chci udělat. Pokud relace, ve které pracujeme, má následující vnořené relace, budou tabulky temp serveru SQL Server viditelné v relacích nižších v hierarchii, ale ne výše v hierarchii. Dovolte mi, abych si to představil.
v tomto rychlém diagramu je v relaci 2 vytvořena tabulka SQL temp. Relace pod ním (relace 3 a relace 4)jsou schopny vidět tabulku temp serveru SQL., Relace 1, která je nad relací 2, však nebude moci vidět tabulku temp serveru SQL.
SQL temp tabulka je zrušen, nebo zničeny, jakmile se odpojí relace. Mnohokrát uvidíte, že vývojáři používají příkaz „DROP # Table_Name“ na konci svého prohlášení pouze k vyčištění. Ale je to jen na vás a na tom, čeho se snažíte dosáhnout.,
také si všimněte, že v případě konfliktu jmen (nezapomeňte, že v tempdb jsou vytvořeny tabulky temp serveru SQL) Server SQL připojí příponu ke konci názvu tabulky tak, aby byla jedinečná v databázi tempdb. Tento proces je však pro vývojáře/uživatele transparentní. Můžete použít stejný název, který jste prohlásili, protože je omezen na tuto relaci.
globální tabulky SQL temp
globální tabulky SQL temp jsou užitečné, pokud chcete, aby byl výsledek viditelný pro všechny ostatní relace. Není třeba nastavovat oprávnění., Každý může vkládat hodnoty, upravovat nebo načítat záznamy z tabulky. Také si všimněte, že každý může klesnout tabulku. Stejně jako místní tabulky temp SQL Server, jsou upuštěny, jakmile se relace odpojí a již neexistují žádné další odkazy na tabulku. Vždy můžete použít příkaz „DROP“ k jeho vyčištění ručně. Což bych doporučil.
Chcete-li vytvořit globální tabulku SQL temp, jednoduše použijte dva symboly libry před názvem tabulky. Příklad: # # Global_Table_Name.,
proměnné tabulky
proměnné tabulky se vytvářejí jako každá jiná proměnná pomocí deklarace. Mnozí věří, že proměnné tabulky existují pouze v paměti, ale to prostě není pravda. Jsou umístěny v databázi tempdb podobně jako místní tabulky temp serveru SQL. Stejně jako místní tabulky SQL temp jsou proměnné tabulky přístupné pouze v relaci, která je vytvořila. Na rozdíl od tabulek SQL temp je však proměnná tabulky přístupná pouze v rámci aktuální dávky. Nejsou viditelné mimo šarži, což znamená, že pojem hierarchie relace může být poněkud ignorován.,
pokud jde o výkon, proměnné tabulky jsou užitečné s malým množstvím dat (jako jen několik řádků). V opačném případě je tabulka temp serveru SQL Server užitečná při prosévání velkého množství dat. Takže pro většinu skriptů budete s největší pravděpodobností vidět použití tabulky temp SQL Server na rozdíl od proměnné tabulky. Nemluvě o tom, že jeden je užitečnější než druhý, je to jen musíte vybrat ten správný nástroj pro práci.
zde je rychlý příklad nastavení a použití proměnné tabulky.,
vytvořili jsme proměnnou tabulky, která bude obsahovat informace o celkovém množství určitého prodaného produktu. Toto je velmi zjednodušený příklad a my bychom ho nepoužívali, kdyby obsahoval mnoho řádků. Ale kdybychom se dívali jen na několik produktů, mohlo by to opravdu dobře. Jakmile je vyplněna proměnná tabulky, můžete se k ní připojit jako ke stolu k další tabulce a shromáždit jakékoli informace, které potřebujete. Existuje tedy velká flexibilita a umožňuje vývojáři být docela kreativní.
také v závěrečné poznámce, pokud jde o transakce na proměnných tabulky., Pokud vývojář vrátí transakci, která zahrnuje změny proměnných tabulky, změny provedené v proměnných tabulky v rámci této konkrétní transakce zůstanou nedotčeny. To znamená, že ostatní části této transakce budou vráceny zpět, ale cokoli odkazující na proměnnou tabulky nebude, pokud tato část skriptu není Chybná.,
- Autora
- Poslední Příspěvky
začal svou IT kariéru v helpdesk world a nakonec se přestěhoval do sítě / správce systémů straně věcí. Po nějaké době si vyvinul náklonnost k práci s databázemi (hlavně SQL Server) a zaměřil svou kariéru na to za posledních osm let., Pracoval pro různá průmyslová odvětví ve velkém i malém prostředí s různými potřebami.
SQL Shack mu poskytl příležitost přispět ke komunitě, která mu v průběhu let dala tolik.,
Zobrazit všechny příspěvky od Aamir Syed
- Je SQL Server Vždy Šifrována, pro citlivé šifrování dat, ne pro vaše prostředí – červenec 27, 2018
- případy Užití pro Dotaz Uložení do SQL Serveru – 18. července, 2018
- Při Použití SQL Temp Tabulky vs. Proměnné Tabulka – 21. února 2017