Farklı kaynaklardan sorgu bağlantılı SQL Server tabloları çalıştırdığınızda sonuçlar görünmez

Özgün KB numarası: 824169

Not

Bu makale, Microsoft Access veritabanı (.mdb) dosyası veya Microsoft Access veritabanı (.accdb) dosyası için geçerlidir. Temel makro, kodlama ve birlikte çalışabilirlik becerileri gerektirir.

Belirtiler

Farklı kaynaklardan veya veritabanlarından bağlantılı Microsoft SQL Server tablolarını birleştiren bir Microsoft Access veritabanında sorgu çalıştırdığınızda, sorgu hiçbir veri döndürmeyebilir.

Ancak, aynı kaynak veya veritabanındaki bağlı SQL Server tablolarına başvuran benzer bir sorgu çalıştırdığınızda, bu sorun oluşmaz.

Geçici Çözüm

Bu sorunu geçici olarak çözmek için aşağıdaki yöntemlerden birini kullanın:

Sorguyu yeniden yazma

Like anahtar sözcüğüyle birleştirme ölçütlerini kullanmak için Microsoft Access sorgusunu yeniden yazabilirsiniz. LIKE işlecini kullanarak ANSI JOIN kullanmak yerine farklı veritabanlarındaki bağlantılı tablolardaki bir alanı diğer alanla karşılaştırabilirsiniz.

Örneğin, özgün sorgu aşağıdaki gibiyse ve SQL Server veritabanı DB1 ve dbo_db2_table1 dbo_db1_table1 bağlıysa, dbo_db2_table2 SQL Server veritabanı DB2'den bağlanır:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

sorguyu aşağıdaki gibi yeniden ifade edin:

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
dbo_db1_table1, 
dbo_db2_table1 INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;
WHERE 
(((dbo_db1_table1.db1_table1_col2 LIKE dbo_db2_table1.db2_table1_col2));

Not

Burada hem ANSI JOIN hem de NON ANSI JOIN söz dizimi aynı sorguda görünür.

Access veritabanı projesi kullanma

Bu makalenin "Belirtiler" bölümünde belirtilen sorundan kaçınmak için, Microsoft Access veritabanı yerine bir Microsoft Access veritabanı projesi kullanın. Microsoft Access veritabanı projesindeki uygun SQL Server tablolarını bağlayın ve ardından aşağıdaki sorguyu dahil etmek için bir saklı yordam oluşturun (burada dbo_db1_table1 SQL Server veritabanı DB1'den bağlanır ve dbo_db2_table1 dbo_db2_table2 SQL Server veritabanı DB2'den bağlanır):

SELECT 
dbo_db1_table1.db1_table1_col1, 
dbo_db2_table1.db2_table1_col1, 
dbo_db2_table2.db2_table2_col1
FROM 
(
dbo_db1_table1 INNER JOIN dbo_db2_table1 
ON
dbo_db1_table1.db1_table1_col2 = dbo_db2_table1.db2_table1_col2
) INNER JOIN dbo_db2_table2 
ON 
dbo_db2_table1.db2_table1_col3 = dbo_db2_table2.db2_table2_col3;

Bu saklı yordamı çalıştırdığınızda sonuç kümesi görüntülenir.

SQL Server tablolarını içeri aktarma

Bu makalenin "Belirtiler" bölümünde belirtilen sorundan kaçınmak için, SQL Server tablolarını Access veritabanına bağlamak yerine SQL Server tablolarını Microsoft Access veritabanına aktarın.

Not

SQL Server tablolarını Access veritabanına aktarırsanız, içeri aktarılan tablo, tabloyu içeri aktardığınız sırada verilerin anlık görüntüsünü içerdiğinden, içeri aktarılan tablodaki en son verileri kullanamazsınız.

Ek Bilgi

Sorgularda JOIN anahtar sözcüğünü kullanarak Microsoft Access'teki verileri filtreleyebilirsiniz. JOIN anahtar sözcüğü ANSI JOIN ve NON ANSI JOIN olarak sınıflandırılır. ANSI JOIN sorguda JOIN ve ON anahtar sözcüklerini kullanır. NON ANSI JOIN sorguda WHERE yan tümcesi kullanır.

NON ANSI JOIN, ANSI 92 SQL'in evrimi öncesinde daha sık kullanılır ve ANSI JOIN'e yükseltilmiştir. Microsoft, verileri filtrelemek için sorgularınızda ANSI JOIN kullanmanızı önerir.

Başvurular

Yükseltme Sihirbazı'nı çalıştırma hakkında daha fazla bilgi için, Yardım menüsünde Microsoft Office Access Yardımı'na tıklayın, Yardım bölmesindeki Arama kutusuna Yükseltme Sihirbazı yazın ve konuyu görüntülemek için Aramayı başlat'a tıklayın.