Bu makalede Sql server’da iki farklı geçici tablo oluşturmayı, geçici tablolara veri aktarımı gibi işlemleri gerçekleştirmeyi ve geçici tabloya erişim yöntemlerini görmüş olacağız.
2 farklı geçici tablo oluşturma yöntemi olduğunu söylemiştir bunlar
- Lokal geçici tablo
- Global geçici tablo
Lokal geçici tablo: sadece açık olan o veritabanı bağlantısı üzerinden erişebilirsiniz. Bağlantı kesilirse yani ilgili veritabanı bağlantısı kesildiğinde SQL Server açık kalsa dahi lokal tablo kaybolur.
Global geçici tablo: Bu geçici tablo yönteminde ise ilgili veritabanı bağlantısı kesilse dahi bir başka bağlantı üzerinden global geçici tablolara erişim sağlanır. Taki SQL server kapatılana kadar. Yani sql server üzerindeki son veritabanı bağlantısı kaptılana kadar global geçici tablolara erişim sağlanır. Global geçici tabloları oluşturmanın, lokal geçici tablo oluşturmadan tek farkı ise 2 tane # işaretinin yanyana kullanılmasıdr, yani #Tabloadi ile lokal geçici tablo tanımlanırken ##Tabloadi ilede global geçici tablo tanımlanabilir. bir örnek gerçekleştirelim veritabanı işlemlerini AdventureWorks2012 veritabanı üzerinden gerçekleştireceğiz.
Tablo oluşturmak için create table cümlesini ve tablo içerisine veri eklemesi içinde INSERT INTO cümlesini kullanacağız. Global geçici tablo oluşturma içerisine AdventureWorks2012 veritabanı “Sales” tablosu içerisindeki alanlardan faydalanarak oluşturacağız.
1 2 3 4 5 6 7 | CREATE TABLE ##Musteriler(MusteriID INT, MusteriAd VARCHAR(50), MusteriSoyad VARCHAR(50)); INSERT INTO ##Musteriler(MusteriID,MusteriAd,MusteriSoyad) SELECT Musteri.CustomerID, FirstName, LastName FROM Person.Person AS Kisi INNER JOIN Sales.Customer AS Musteri ON Kisi.BusinessEntityID = Musteri.PersonID; SELECT MusteriID, MusteriAd, MusteriSoyad FROM ##Musteriler; |
Sonuç olarak tablo çıktısı
Böylelikle ##Musteriler diyerek yani ## kullanarak global geçici tablomu oluşturmuş oldum. Şimdi global olup olmadığını almamak için başka bir veritabanı bağlantısı üzerinden AdventureWorks2012 veritabanı üzerinden oluşturduğumuz ##Musteriler geçici tablosuna ulaşmaya çalışalım ve sonucu görelim.
master veritabanı seçilirken sorgu penceremden ##Musteriler adlı global geçici tabloyu aşağıdaki sql cümlesini kullanarak çekiyoruz.
1 | SELECT * FROM ##Musteriler |
ver aşağıdaki erkan görüntüsünde gördüğünüz gibi Sqlserver’in master tablosu üzerinden ##Musteriler global tablosu sorunsuz şekilde geldi.
Görüleceği gibi global geçici tablolara sqlserver’da herhangi bir veritabanı üzerinden erişebilmekteyiz. Ama bu global yöntem kullanılırken çok dikkatli olunmalı aynı SQLServer üzerinden birden çok veritabanının kullanılma ihtimalinde global geçici tabloların aynı isimden dolayı çakışma ihtimalini düşünürek akıllıca kullanılması gereken bir yöntemdir.