Aylık arşivler: Kasım 2009

Database name ‘%.*ls’ ignored, referencing object in tempdb

B sunucusu üzerinde linked server olarak tanımlanmış A sunucusunda DB1 isimli veritabanında oluşturduğumuz T1 tablosuna linked server konulu makalemizde anlattığımız gibi 4 parçalı tanımlayıcı (4-parts identifier) kullanarak aşağıdaki gibi ulaşabiliriz.
Linkedserver.database.schema_name.object_name
A.DB1.dbo.T1
Fakat A sunucu üzerinde oluşturduğumuz geçici tablolara (temporary tables) erişmek bu kadar kolay olmamaktadır. Örneğin sunucu üzerinde oluşturduğumuz ##T1 isimli global geçici tabloya erişmek için SELECT * FROM A.tempdb.dbo.##T1 yazım biçimiyle erişebileceğimizi düşünürken aşağıdaki hatayla karşılıyoruz.
Database name ‘tempdb’ ignored, referencing object in tempdb.
Oysa aşağıdaki gibi tempdb altındaki nesnelere baktığımızda tabloyu görebiliyoruz fakat tempdb’nin yapısından dolayı nesnelere erişemiyoruz.

SELECT * FROM A.tempdb.sys.sysobjects
WHERE type = 'U'

Bunun için en iyi yöntem OPENQUERY fonksiyonunu kullanmaktır.

SELECT * INTO #t1 FROM OPENQUERY(A, 'SELECT * FROM ##T')

OPENQUERY fonksiyonuyla ilgili daha geniş bilgi için SQL Server Linked Server (Bağlı Sunucu) yazısı okunabilir.

INNER, LEFT, RIGHT, CROSS (SQL Server JOIN Türleri – I)

SQL Server JOIN türleri kullanılır, INNER JOIN, OUTER JOIN (LEFT JOIN, RIGHT JOIN, CROSS JOIN) nedir?

Bu makalede genelde ilişkisel veritabanı [Relational Database] sistemlerinin özelde SQL Server’in temel konularından biri olan JOIN seçeneklerini özetleyeceğiz. SQL Server ne tür JOIN seçenekleri sunuyor, bu seçeneklerin birbirinden farkı nedir, olay sadece syntax farklılığı mıdır, performans cephesinden neler oluyor . . . bu soruları yanıtlayacağız. Table veya view gibi kaynakları birbirine bağlayan JOIN ifadeleri bu kaynaklara uygulanmış SELECT, INSERT.SELECT, SELECT.INTO, UPDATE ve DELETE işlemlerinde FROM deyimiyle birlikte kullanılır. Okumaya devam et