2009-07-24 28 views
11

Şu anda veritabanı olarak SQL Server kullanan bir üçüncü taraf yazılım paketi çalıştırıyorum. Farklı bir konumda çalışan SQL Server'ın ikinci bir örneğim var ve bu örnekte oluşturduğum bazı uygulamalar SQL Server'ın üçüncü taraf yazılımındaki bazı verilere erişmesi gerekiyor. Bu yüzden, kutular arasında bir ODBC bağlantısı oluşturdum ve SQL Server sürümüne bağlı bir sunucu olarak üçüncü taraf SQL sunucusunu kurdum.Bağlantılı SQL Server veritabanı "tutarsız meta veriler" hatası veriyor

OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time 
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a 
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time]. 

Msg 7356, Level 16, State 1, Line 1 

OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata 
information was changed at execution time. 

Bu hatadır:

SELECT * FROM LinkedServerName.SchemaName.dbo.TableName 

ki ben bu hatayı alınan Kime: Bir sınama, ben üçüncü tarafın tablolardan birini erişen benim SQL sunucusundan aşağıdaki deyimi gibi bir şey koştu erişmeye çalıştığım diğer tüm tablolar için aynı. Bu hata ne anlama geliyor ve bunun bir yolu var mı? Eğer bağlantılı sunucu veritabanından veri sorgulamak için bir four-part adı sözdizimi kullanırsanız

cevap

27

Bunun birkaç kez oldu. Bulduğum geçici çözüm, OPENQUERY kullanmaktı.

SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table') 

Ayrıca, yukarıda yayınlanan seçme hatalı 4 yarı adı olan (sadece bir yazım hatası olabilir ama emin değildim olabilir). Bu

7
Server: Msg 7356, Level 16, State 1, Line 1 

OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. 
Metadata information was changed at execution time. 

, bu hata iletisini alabilirsiniz. Bu soruna geçici bir çözüm bulmak için, bağlantılı sunucu veritabanındaki verileri sorgulamak için OPENQUERY sözdizimini kullanabilirsiniz. Bu hata iletisiyle ilgili daha ayrıntılı bilgi almak için izleme bayrağı 7300'ü açabilirsiniz. Izleme bayrağı 7300 açmak için , aşağıdaki Transact-SQL deyimini çalıştırın:

DBCC TRACEON(7300) 
2

LinkedServerName.DBName.SchemaName.TableName Bununla bu çözülmüş olması adımlar olmalıdır

1) Adım 1: SQL Server Management Studio'da

• ardından Bağlantılı Sunucular ve 'Yeni Bağlantılı Sunucu' açın.

• Görünen sihirbazın içi - Genel sekmesini seçin.

• "Bağlı sunucu" alanında diğer adı belirtin.

• Sağlayıcı olarak SQL Native Client'ı seçin.

• "Ürün Adı" alanına sql_server ekle (bu sihir).

• "Veri Kaynağı" nda - Bağlantılı sunucu olarak kullanılacak sunucunun adını belirtin.

2) Adım 2:

Güvenlik sekmesinde

• - Uygun güvenlik seçeneklerini belirtin (örneğin güvenlik içeriği)

3) Adım 3: Sunucu Seçenekleri sekmesinde

• - Doğru olması için "Veri Erişimi", RPC, "Rpc Out" ve "Uzaktan İşbirliği Kullan" seçeneklerini kullanın.

4) Adım 4:

• keyfini çıkarın.

http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html

+0

soru başka MS SQL sunucusuna bir bağlantı hakkında olup bu cevabı (yerli yolu daha performanslısı bu durum için en geçerli bir bazıları DBMS (mySQL, PostgreSQL, ...) olduğu ODBC'den). Ancak 2. sunucunuz bir MS SQL sunucusu değilse işe yaramaz – DestyNova

İlgili konular