سؤال

أنا عادة لا أعمل مع خوادم مرتبطة، لذلك لست متأكدا مما أفعل الخطأ هنا.

سيعمل الاستعلام مثل هذا على خادم FoxPro مرتبط من SQL 2000:

EXEC('Select * from openquery(linkedServer, ''select * from linkedTable'')')

ومع ذلك، من البحث على الإنترنت، يجب أن يعمل شيء مثل هذا أيضا:

Select * from linkedserver...linkedtable

لكنني أتلقى هذا الخطأ:

Server: Msg 7313, Level 16, State 1, Line 1
Invalid schema or catalog specified for provider 'MSDASQL'.
OLE DB error trace [Non-interface error:  Invalid schema or catalog specified for the provider.].

أدرك أنه من المفترض أن تكون Serveralias.category.schema.tablename، ولكن إذا قمت بتشغيل الجداول SP_ _EX على الخادم المرتبط، فهذا فئة لجميع الجداول، أحصل فقط على مسار الشبكة إلى حيث تكون ملفات البيانات، والمواصرة فارغة وبعد

هل إعداد الخادم هذا بشكل غير صحيح؟ أم ما أحاول أن أفعله غير ممكن؟

هل كانت مفيدة؟

المحلول

من عند MSDN.:

استخدم دائما أسماء مؤهلة بالكامل عند العمل مع كائنات على الخوادم المرتبطة. لا يوجد دعم لدقة ضمنية لاسم مالك DBO للجداول في الخوادم المرتبطة

لا يمكنك الاعتماد على دقة اسم المخطط الضمني في تدوين ".." للخوادم المرتبطة. للحصول على "خادم" FoxPro "، سيتعين عليك استخدام قاعدة البيانات والمخطط أثناء تعيينها لعظيمة FoxPro الخاصة بهم في برنامج التشغيل الذي تستخدمه (I فكر في انهم خريطة للمجلد واسم الملف، لكنني لا أستخدم برنامج تشغيل ملف ISAM أكثر من 10 سنوات الآن).

نصائح أخرى

أعتقد أنك بحاجة إلى أن تكون واضحة حول الموارد في جزء الخادم المرتبط من الاستعلام، على سبيل المثال:

EXEC SomeLinkedServer.Database.dbo.SomeStoredProc

بمعنى آخر، لا يعمل تخلص منها في هذه الحالة، يجب أن تكون أكثر تحديدا.

انها في الواقع:

serveralias.catalog.schema.linkedtable.

الكتالوج هي قاعدة البيانات التي تنفسها على الخادم المرتبط، والكتالوج هو كتالوج الجدول البعيد. حتى اسم أربعة أجزاء صالح سيبدو هذا

serveralias.adventureworks.humanresources.employee.

أو

serveralias.mydb.dbo.mytable.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top