سؤال

أحاول سحب البيانات من ملقم SQL بعيد.لا يمكن الوصول إلى الملقم البعيد استخدام مصادقة SQL;لم يكن لدي أي حظ باستخدام نفس بيانات الاعتماد مع sp_addlinkedserver.

أنا أحاول شيئا من هذا القبيل:

Exec sp_dropserver 'Remote', 'droplogins'
go

EXEC sp_addlinkedserver   
   @server='Remote', 
   @srvproduct='',
   @provider='SQLNCLI', 
   @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='Remote',
    @rmtuser='User',
    @rmtpassword='Secret'

Select Top 10 * from Remote.DatabaseName.dbo.TableName

هنا هو ما تحصل عليه:

OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"Login timeout expired".

OLE DB provider "SQLNCLI" for linked server "Remote" returned message 
"An error has occurred while establishing a connection to the server. 
When connecting to SQL Server 2005, this failure may be caused by the 
fact that under the default settings SQL Server does not allow remote 
connections.".

Msg 53, Level 16, State 1, Line 0
Named Pipes Provider: Could not open a connection to SQL Server [53]. 

مرة أخرى, لا يمكن الوصول إلى الملقم مباشرة (في SQL server إدارة Studio) باستخدام هذه الدقيقة التفويض ، حتى انها ليست مشكلة في شبكة أو التفويض.

معظم الأمثلة التي رأيتها على الانترنت يبدو أن تنطوي على ويندوز حسابات المجال ، مقابل SQL الأمن تسجيلات الدخول.هل هذا العمل مع SQL المصادقة ؟

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

المحلول

أنها لا تعمل مع مصادقة sql.في الواقع أسهل ، كما لم يكن لديك لإعداد Kerberos إذا كنت تستخدم مصادقة SQL.

شيء واحد هو مربكة حول رسائل خطأ العنوان الخاص بك هو عنوان IP :123.45.678.90

رسالة الخطأ الخاصة بك يتحدث عن أنابيب الاتصال المسماة.يمكن أن يكون هذا دليل ؟

لم يكن لديك للإشارة إلى الملقم في tsql ضمن من عنوان IP.إذا قمت بإضافة أحد الاسم المستعار على الملقم المحلي, مشيرا إلى الملقم البعيد يمكنك أن تعطي أكثر عقلانية اسم.يشير إلى ذلك عنوان IP من الواضح مرضية.

نصائح أخرى

لحل المشكلة أعلاه أنا عدلت ملقم مرتبط تعريف تحديد TCP على وجه التحديد:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='TEST_LINK',
    @rmtuser='user',
    @rmtpassword='secret'

هذا عملت بالنسبة لي.هذه الطريقة سمحت لي أيضا تحديد منفذ غير قياسي على الملقم البعيد:

EXEC sp_addlinkedserver   
    @server='TEST_LINK', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='tcp:0.0.0.0,1111'

آمل أن يساعد هذا

اكتشفت ذلك بفضل خط من التعليمات في SMS واجهة المستخدم الرسومية معالج إضافة ملقمات المرتبطة: "If SQL Server is selected, then the Linked Server name is also the network name of the server."

اعتقد اسم ملقم مرتبط فقط التعسفي المستعار.

هذا يعمل مثل السحر - فمن العار أن علي أن اكتب IP (بين قوسين) في كل مرة كنت ترغب في استخدام هذا الخادم المرتبط ولكن هناك لديك.

Exec sp_dropserver '0.0.0.0', 'droplogins'
go

EXEC sp_addlinkedserver   
    @server='0.0.0.0', 
    @srvproduct='',
    @provider='SQLNCLI', 
    @datasrc='0.0.0.0'

EXEC sp_addlinkedsrvlogin
    @useself='FALSE',
    @rmtsrvname='0.0.0.0',
    @rmtuser='user',
    @rmtpassword='secret'
go

Select Top 10 * from [0.0.0.0].DatabaseName.dbo.TableName

إذا كان الفشل على توجيهات عندما كنت في تحديد عنوان IP محاولة التقديم عنوان IP مع "tcp:" ونرى ما إذا كان ذلك يساعد وضعها على الطريق الصحيح.

sp_configure 'المخصصة استعلامات الموزعة',1

القادم

تكوين مع تجاوز

تفحص SQL مساحة configuraton-->Databaseengine-->Remoteconnections-->Loacal و remoteconnections-->shouild استخدام كل من TCP/IP و ممرات الخيار تكتك (إذا كان لا تختار هذا الخيار ثم إعادة تشغيل)

هذا وقد لحل المشكلة موفر OLE DB "SQLNCLI" ملقم مرتبط "عن بعد" إرجاع الرسالة "حدث خطأ أثناء تأسيس اتصال إلى الملقم.عند الاتصال بـ SQL Server 2005 ، هذا الفشل قد يكون سببها الواقع أنه في ظل الإعدادات الافتراضية لا يسمح ملقم SQL عن بعد اتصالات.".

في بعض الأحيان البروتوكولات تم تمكين تكوين ناحية سطح يسمح الاتصالات عن بعد, ولكن خدمة مستعرض SQL Server لم يتم تشغيله منذ تكوين مجموعة.وهذا يعني أن التكوين غير نشط.

حاول إعادة تشغيل مستعرض SQL Server كخطوة لاستكشاف الأخطاء وإصلاحها إذا كانت إعدادات التكوين جميعا يبدو أن يكون صحيحا.

مايك

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