este foarte benefic pentru a stoca date în SQL Server temp mese, mai degrabă decât de a manipula sau de a lucra cu permanent mese. Să presupunem că doriți acces complet DDL sau DML la o masă, dar nu îl aveți. Puteți utiliza accesul de citire existent pentru a trage datele într-un tabel temporar SQL Server și pentru a face ajustări de acolo. Sau nu aveți permisiuni pentru a crea un tabel în baza de date existentă, puteți crea o tabelă Temp SQL Server pe care o puteți manipula., În cele din urmă, s-ar putea să vă aflați într-o situație în care aveți nevoie ca datele să fie vizibile numai în sesiunea curentă. SQL Server suportă câteva tipuri de tabele temporale SQL Server care pot fi foarte utile.
Înainte de a continua, dacă doriți să urmeze de-a lungul cu orice mostre de cod, vă sugerez deschiderea SQL Server Management Studio:
Local SQL temp tabele
SQL Server Local temp tabele sunt create folosind lira simbol sau „hashtag”, urmat de numele tabelului. De exemplu: # Table_name. Tabelele SQL temp sunt create în baza de date tempdb., Un tabel local SQL Server temp este vizibil numai pentru sesiunea curentă. Nu poate fi văzut sau utilizat de procese sau interogări în afara sesiunii în care este declarat.
Iată un exemplu rapid de a lua un set de rezultate și pune-l într-un tabel SQL Server temp.unul dintre cele mai des utilizate scenarii pentru tabelele temporale SQL Server este într-o buclă de un fel. De exemplu, doriți să procesați date pentru o instrucțiune SQL și aveți nevoie de un loc pentru a stoca articole pentru bucla dvs. pentru a le citi. Acesta oferă un mijloc rapid și eficient de a face acest lucru., Consultați eșantionul de cod de mai sus, bucla dvs. poate acum să facă referire la tabelul Temp SQL Server și să proceseze înregistrările care îndeplinesc criteriile obiectivului dvs.
Un alt motiv pentru a utiliza SQL Server tabele temp este aveți unele exigente de prelucrare a face în declarația sql. Să presupunem că creați un join și de fiecare dată când trebuie să trageți înregistrări din acel set de rezultate, trebuie să procesați acest join din nou. De ce nu procesați doar acest rezultat stabilit o dată și aruncați înregistrările într-un tabel SQL temp? Apoi, puteți avea restul instrucțiunii sql se referă la numele tabelului SQL temp., Nu numai că acest lucru economisește procesarea costisitoare a interogărilor, dar poate chiar face ca codul dvs. să pară puțin mai curat.
există un punct pe care vreau să-l fac totuși. Dacă sesiunea în care lucrăm are sesiuni imbricate ulterioare, tabelele temporale SQL Server vor fi vizibile în sesiuni mai mici în ierarhie, dar nu mai sus în ierarhie. Vă rog să-mi permiteți să vizualizez asta.
În această diagramă rapidă, un tabel SQL temp este creat în sesiunea 2. Sesiunile de mai jos (sesiunile 3 și sesiunea 4) Pot vedea tabelul Temp SQL Server., Dar Sesiunea 1, Care este deasupra sesiunii 2, nu va putea vedea tabelul Temp SQL Server.
SQL temp tabel este scăzut sau distruse odată ce sesiunea se deconectează. De multe ori veți vedea că dezvoltatorii folosesc comanda „DROP #Table_Name” la sfârșitul declarației lor doar pentru a curăța. Dar este în întregime până la tine și ceea ce încercați să realizeze., de asemenea, rețineți, că, în caz de conflict nume (amintiți-vă că SQL Server tabele temp sunt create în tempdb) SQL server va adăuga un sufix la sfârșitul numelui tabelului, astfel încât acesta este unic în baza de date tempdb. Dar acest proces este transparent pentru Dezvoltator / utilizator. Puteți utiliza același nume pe care l-ați declarat ca fiind limitat la acea sesiune.
tabele globale SQL temp
tabelele globale SQL temp sunt utile atunci când doriți să doriți ca rezultatul să fie vizibil pentru toate celelalte sesiuni. Nu este nevoie de permisiuni de configurare., Oricine poate insera valori, modifica sau prelua înregistrări din tabel. De asemenea, rețineți că oricine poate renunța la masă. La fel ca tabelele locale SQL Server temp, acestea sunt abandonate odată ce sesiunea se deconectează și nu mai există alte referințe la tabel. Puteți utiliza întotdeauna comanda „DROP” pentru ao curăța manual. Ceea ce aș recomanda.
pentru a crea un tabel global SQL temp, utilizați pur și simplu două simboluri lire în fața numelui tabelului. Exemplu: # # Global_Table_Name.,
variabile tabel
variabile tabel sunt create ca orice altă variabilă, folosind declarația DECLARE. Mulți cred că variabilele de masă există doar în memorie, dar acest lucru nu este pur și simplu adevărat. Ei locuiesc în baza de date tempdb la fel ca tabelele locale SQL Server temp. De asemenea, cum ar fi tabelele locale SQL temp, variabilele de masă sunt accesibile numai în cadrul sesiunii care le-a creat. Cu toate acestea, spre deosebire de tabelele SQL temp, variabila tabelului este accesibilă numai în lotul curent. Ele nu sunt vizibile în afara lotului, ceea ce înseamnă conceptul de ierarhie sesiune poate fi oarecum ignorat., în ceea ce privește performanța, variabilele tabelului sunt utile cu cantități mici de date (cum ar fi doar câteva rânduri). În caz contrar, un tabel SQL Server temp este util atunci când cernerea prin cantități mari de date. Deci, pentru majoritatea scripturilor, veți vedea cel mai probabil utilizarea unui tabel SQL Server temp, spre deosebire de o variabilă de tabel. Ca să nu spun că unul este mai util decât celălalt, este doar trebuie să alegeți instrumentul potrivit pentru locul de muncă.
Iată un exemplu rapid de configurare și utilizare a unei variabile de tabel.,
am creat o variabilă de tabel care va conține informații cu privire la cantitățile totale ale unui anumit produs vândut. Acesta este un exemplu foarte simplificat și nu l-am folosi dacă ar conține o mulțime de rânduri. Dar dacă ne-am uita doar la câteva produse, acest lucru ar putea foarte bine. Odată ce variabila tabel este populată, puteți să vă alăturați acesteia ca o masă la o altă masă și să adunați orice informații aveți nevoie. Deci, există o mulțime de flexibilitate și permite dezvoltatorului să fie destul de creativ.
De asemenea, pe o notă finală, în ceea ce privește tranzacțiile pe variabile de masă., Dacă un dezvoltator derulează o tranzacție care include modificări ale variabilelor tabelului, modificările aduse variabilelor tabelului din cadrul acestei tranzacții vor rămâne intacte. Adică, alte părți ale acestei tranzacții în cauză vor fi returnate, dar orice referire la variabila tabelului nu va fi, cu excepția cazului în care acea parte a scriptului dvs. este eronată.,
- Autor
- Mesajele Recente
și-a început cariera IT în lumea helpdesk și, în cele din urmă, s-a mutat în partea de administrator de rețele/sisteme a lucrurilor. După ceva timp, el a dezvoltat o afecțiune pentru lucrul cu bazele de date (în principal SQL Server) și și-a concentrat cariera pe asta în ultimii opt ani., A lucrat pentru diverse industrii, atât în medii mari, cât și în medii mici, toate cu nevoi diferite.
SQL Shack i-a oferit posibilitatea de a contribui la o comunitate care i-a oferit atât de mult de-a lungul anilor.,
Vezi toate posturile de Aamir Syed
- Este SQL Server Întotdeauna Criptate, pentru datele sensibile de criptare, potrivit pentru mediul dumneavoastră – 27 iulie 2018
- cazuri de Utilizare pentru Interogare Magazin în SQL Server – 18 iulie 2018
- atunci Când pentru a Utiliza SQL Temp Mese vs Masă Variabile – 21 februarie, 2017