Data: 15.06.2025

Tabele tymczasowe w MS SQL Server
Spis treści
- Tabele tymczasowe w MS SQL Server
W artykule Tabele tymczasowe w MS SQL Server znajdziesz informacje na temat tworzenia lokalnych i globalnych tabel tymczasowych.
Tabele tymczasowe w MS SQL Server
W pracy z bazami danych czasami potrzebujemy przechowywać dane tymczasowo np. do ich dalszego przetwarzania w ramach złożonych zapytań lub raportów.
SQL Server oferuje do tego celu tabele tymczasowe, które są bardzo przydatne w pracy z dużymi zbiorami danych, optymalizacji zapytań lub podziale skomplikowanych operacji na mniejsze kroki.
W artykule wyjaśnię, czym są tabele tymczasowe, jak działają oraz jakie są ich rodzaje. Przykłady prezentuję z wykorzystaniem danych z bazy Northwind.
Czym są tabele tymczasowe?
Tabele tymczasowe w SQL Server to specjalny typ tabel, które są tworzone w tempdb – tymczasowej bazie danych wykorzystywanej przez SQL Server. Tymczasowe tabele są automatycznie usuwane po zakończeniu sesji, w której zostały utworzone.
W SQL Server mamy dwa rodzaje tabel tymczasowych:
- lokalne tabele tymczasowe – dostępne są tylko w ramach jednej sesji
- globalne tabele tymczasowe – dostępne dla wszystkich sesji.
Lokalne tabele tymczasowe
Lokalne tabele tymczasowe są widoczne tylko w czasie trwania jednej sesji. Sesja to połączenie z bazą danych.
Jeśli utworzysz lokalną tabelę tymczasową, będzie ona widoczna i dostępna tylko dla Ciebie. Gdy zamkniesz sesję tabela zniknie automatycznie.
Lokalną tabelę tymczasową tworzymy w MS SQL dodając znak # przed jej nazwą np. #Produkty.
Najważniejsze cechy lokalnych tabel tymczasowych:
- są tworzone w systemowej bazie tempdb
- są niewidoczne dla innych użytkowników i sesji
- są automatycznie usuwane po zakończeniu sesji
Tworzenie lokalnej tabeli tymczasowej
W poniższym przykładzie tworzymy tymczasową tabelę #Produkty, widoczną tylko w bieżącej sesji:
- kopiujemy kolumny ProductID, ProductName i UnitPrice z tabeli Products
- automatycznie tworzymy strukturę tabeli na podstawie instrukcji
SELECT - kopiujemy dane z tabeli Products
SELECT ProductID, ProductName, UnitPriceINTO #ProduktyFROM ProductsAby uruchomić przykład:
- otwórz aplikację SQL Server Management Studio (SSMS)
- wklej powyższy kod i uruchom go przyciskiem
F5– utworzona zostanie wówczas tabela tymczasowa
Aby zobaczyć tabelę w oknie Object Explorer:
-
kliknij prawym przyciskiem myszy obiekt Databases (bazy danych) i wybierz opcję Refresh (Odśwież)

-
rozwiń kolejno System Databases, tempdb, Temporary Tables

W przypadku lokalnych tabel tymczasowych SQL Server dodaje do nazwy tabeli tymczasowej unikalny ciąg znaków, żeby odróżnić ją od innych tabel o tej samej nazwie, które mogą ewentualnie zostać utworzone przez innych użytkowników.
Lokalne tabele tymczasowe są widoczne tylko w sesji, w której zostały utworzone – inni użytkownicy ich nie widzą i nie mają możliwości sprawdzenia, czy dana nazwa tabeli już istnieje.

Odczytywanie danych z lokalnej tabeli tymczasowej
Dane z tabeli tymczasowej możemy odczytywać tak samo, jak to robimy w przypadku standardowych tabel. Aby odczytać dane wklej w SQL Server Management Studio poniższe zapytanie i uruchom je przyciskiem F5.
SELECT *FROM #Produkty;
Tabela tymczasowa #Produkty jest podkreślana na czerwono, gdyż IntelliSense w SSMS nie odświeżył listy obiektów i „nie widzi” tej tabeli, mimo że faktycznie tabela istnieje i wykonywane w niej zapytania działają poprawnie.
IntelliSense to funkcja edytora SQL Server Management Studio, która podpowiada składnię, nazwy obiektów i pomaga w pisaniu zapytań, podobnie jak autouzupełnianie w edytorach kodu.
Globalne tabele tymczasowe
Globalne tabele tymczasowe w SQL Server to specjalny typ tabel, które – w przeciwieństwie do tymczasowych tabel lokalnych – są dostępne dla wszystkich użytkowników i wszystkich sesji.
Aby utworzyć globalną tabelę tymczasową, dodajemy dwa znaki hash (##) przed jej nazwą np. ##Produkty.
Cechy globalnych tabel tymczasowych:
- tworzone są w systemowej bazie tempdb
- są widoczne dla każdej sesji i dla każdego użytkownika
- usuwane są automatycznie, gdy zamknięta zostanie sesja, w której tabela została utworzona i nie ma otwartej żadnej sesji, która blokuje tę tabelę do zapisu
Tworzenie globalnej tabeli tymczasowej
W poniższym przykładzie tworzymy tabelę tymczasową ##Produkty:
- kopiujemy kolumny ProductID, ProductName i UnitPrice z tabeli Products
- automatycznie tworzymy strukturę tabeli na podstawie instrukcji
SELECT - kopiujemy dane z tabeli Products
SELECT ProductID, ProductName, UnitPriceINTO ##ProduktyFROM ProductsAby uruchomić przykład:
- otwórz aplikację SQL Server Management Studio (SSMS)
- wklej powyższy kod i uruchom go przyciskiem
F5
Aby zobaczyć tabelę w oknie Object Explorer:
-
kliknij prawym przyciskiem myszy obiekt Databases (bazy danych) i wybierz opcję Refresh (Odśwież)

-
rozwiń kolejno System Databases, tempdb, Temporary Tables

W przypadku globalnych tabel tymczasowych SQL Server nie dodaje do nazwy tabeli dodatkowego identyfikatora, gdyż tabele te są widoczne dla wszystkich sesjach i dla wszystkich użytkowników.
Nazwa tabeli musi być niepowtarzalna w bazie danych i nie ma tutaj ryzyka, że ktoś inny utworzy tabelę o takiej samej nazwie.
Odczytywanie danych z globalnej tabeli tymczasowej
Dane z tabeli tymczasowej możemy odczytywać tak samo, jak to robimy w przypadku standardowych tabel. Aby odczytać dane wklej w SQL Server Management Studio poniższe zapytanie i uruchom je przyciskiem F5
SELECT *FROM ##Produkty;
Tabela tymczasowa ##Produkty jest podkreślana na czerwono, gdyż IntelliSense w SSMS nie odświeżył listy obiektów i jej „nie widzi”. Jest ona jednak utworzona prawidłowo i możemy wykorzystywać ją w zapytaniach.
Kiedy warto używać tabel tymczasowych?
Tabele tymczasowe mogą się przydać, gdy:
- potrzebujesz współdzielić dane między różnymi procesami lub użytkownikami np. w aplikacjach, gdzie kilka części programu działa równolegle
- kilka procedur ma korzystać z tych samych danych tymczasowych – nie chcesz ich wielokrotnie kopiować
- chcesz przyspieszyć działanie aplikacji – trzymanie danych tymczasowo w tabeli może być szybsze niż ich wielokrotne pobieranie z bazy
- testujesz lub debugujesz złożony proces i chcesz podejrzeć dane na różnych etapach działania
- chcesz poprawić wydajność zapytania – zmniejszają złożoność zapytań, dzieląc je na mniejsze, logiczne etapy
Tabele tymczasowe to ważne narzędzie pracy osób zajmujących się bazami danych. Ułatwiają one pracę z dużymi zbiorami danych, pozwalają lepiej organizować kod i zwiększają jego wydajność.
Więcej informacji na temat tworzenia i modyfikowania tabel znajdziesz w naszym artykule Tworzenie i modyfikowanie tabel w MS SQL Server
Zajrzyj na nasze kursy SQL, aby poćwiczyć tworzenie tabel tymczasowych oraz zdobyć inne umiejętności związane z językiem MS SQL i obsługą baz danych SQL Server.
