Tedious: SQL Server 2012 ECONNREFUSED

تم إنشاؤها على ٨ ديسمبر ٢٠١٢  ·  20تعليقات  ·  مصدر: tediousjs/tedious

باستخدام أحدث إصدارات nodejs والإصدارات المملة والتعليمات البرمجية التالية:

var Connection = يتطلب ("مملة").
var Request = مطلوب ('tedious'). Request؛

var config =
{
الخادم: "192.168.1.113" ،
اسم المستخدم: "myUserName" ،
كلمة المرور: "myPassword" ،
والخيارات:
{
قاعدة البيانات: 'MyDatabase' ،
المنفذ: "1433" ،
تشفير: صحيح ،
سائق: "SQL Server Native Client 11.0"
} ،
تصحيح:
{
الحزمة: صحيح ،
البيانات: صحيح ،
الحمولة: صحيح ،
الرمز المميز: صحيح ،
سجل: صحيح
}
} ؛

var connect = اتصال جديد (config) ؛

connect.on (اتصال ، متصل) ؛
connect.on ('infoMessage'، infoError) ؛
connect.on ('errorMessage'، infoError) ؛
connect.on ("النهاية" ، النهاية) ؛
Connection.on ("تصحيح الأخطاء" ، تصحيح الأخطاء) ؛

وظيفة متصلة (يخطئ)
{
console.log ('متصل =>' + يخطئ) ؛
}

معلومات الوظيفة خطأ (معلومات)
{
console.log ('infoError =>' + info) ؛
}

تصحيح الوظيفة (رسالة)
{
console.log ('debug =>' + message) ؛
}

نهاية الوظيفة ()
{
}

تلقيت الخطأ التالي بعد تشغيله:

اختبار العقدة test_sqlserver_tedious.js
التصحيح => الاتصال بـ 192.168.1.113:1433 - خطأ فشل: الاتصال ECONNREFUSED
debug => تغيير الحالة: توصيل -> نهائي
التصحيح => تم إغلاق الاتصال بـ 192.168.1.113:1433
debug => تغيير الحالة: نهائي -> نهائي

أيه أفكار؟ يمكنني مساعدتك في اختبار المصدر إذا أوضحت لي كيف.

شكرا

التعليق الأكثر فائدة

يقترح ECONNREFUSED أن 192.168.1.113 لا يستمع على المنفذ 1433.

هل تم تمكين بروتوكول TCP في مثيل SQL Server؟
هل يمكنك telnet إلى المنفذ 1433 على 192.168.1.113 (من النظام الذي تستخدمه مملاً)؟ إذا لم يكن الأمر كذلك ، فهل يمكنك telnet إلى المنفذ 1433 مباشرةً من 192.168.1.113؟ إذا كانت الإجابة لا ، فهذا يشير إلى أن SQL Server لا يستمع على المنفذ. إذا كانت الإجابة بنعم ، فهذا يشير إلى أن شيئًا ما (ربما جدار حماية) هو سبب المشكلة.

ال 20 كومينتر

يقترح ECONNREFUSED أن 192.168.1.113 لا يستمع على المنفذ 1433.

هل تم تمكين بروتوكول TCP في مثيل SQL Server؟
هل يمكنك telnet إلى المنفذ 1433 على 192.168.1.113 (من النظام الذي تستخدمه مملاً)؟ إذا لم يكن الأمر كذلك ، فهل يمكنك telnet إلى المنفذ 1433 مباشرةً من 192.168.1.113؟ إذا كانت الإجابة لا ، فهذا يشير إلى أن SQL Server لا يستمع على المنفذ. إذا كانت الإجابة بنعم ، فهذا يشير إلى أن شيئًا ما (ربما جدار حماية) هو سبب المشكلة.

حصلت على الخطأ:

debug => اتصال بـ undefined: 1433 - فشل خطأ: توصيل ECONNREFUSED
debug => تغيير الحالة: توصيل -> نهائي
التصحيح => الاتصال بـ undefined: 1433 مغلق
debug => تغيير الحالة: نهائي -> نهائي

    debug=> connection to undefined:1433 closed

يبدو أن undefined مريب. أتوقع أن أرى اسم الخادم أو عنوان IP هناك.

dbServer: 192.168.11.8 \ SQLEXPRESS2008
منفذ ديسيبل: 1433

flybluewolf ، يرجى إلقاء نظرة على المشكلة رقم 68 ، حيث أعتقد أن إجابتي ذات صلة.

حسنًا ، يبدو أن الاتصال الآن. ولكن عندما أحاول القيام بعملية بسيطة حددها فقط معلقة.

هذا هو إخراج التصحيح:

المصحح الاستماع على المنفذ 51981
التصحيح => متصل بـ 127.0.0.1:1433
debug => تغيير الحالة: الاتصال -> SentPrelogin
التصحيح => تغيير الحالة: SentPrelogin -> SentLogin7WithStandardLogin
infoError => [كائن كائن]
infoError => [كائن كائن]
debug => تم تغيير حجم الحزمة من 4096 إلى 4096
تصحيح => تغيير الحالة: SentLogin7WithStandardLogin -> LoggedInSendingInitialSql
debug => تغيير الحالة: LoggedInSendingInitialSql -> LoggedIn

هذا هو الكود الخاص بي:

var Connection = يتطلب ("مملة").
var Request = مطلوب ('tedious'). Request؛

var config =
{
الخادم: "127.0.0.1" ،
اسم المستخدم: "اسم المستخدم" ،
كلمة المرور: "userpassword" ،
قاعدة البيانات: "MyDatabase" ،
والخيارات:
{
قاعدة البيانات: "MyDatabase" ،
// المنفذ: "1433" ،
// التشفير: صحيح ،
// برنامج التشغيل: "SQL Server Native Client 11.0"
} ،
تصحيح:
{
الحزمة: صحيح ،
البيانات: صحيح ،
الحمولة: صحيح ،
الرمز المميز: صحيح ،
سجل: صحيح
}
} ؛

var connect = اتصال جديد (config) ؛

connect.on (اتصال ، متصل) ؛
connect.on ('infoMessage'، infoError) ؛
connect.on ('errorMessage'، infoError) ؛
connect.on ("النهاية" ، النهاية) ؛
Connection.on ("تصحيح الأخطاء" ، تصحيح الأخطاء) ؛

وظيفة متصلة (يخطئ)
{
executeStatement () ،
}

تنفيذ الوظيفة
{
طلب var = طلب جديد ("حدد * من Property.PropertyGroups" ، الوظيفة (خطأ ، row_count)
{
إذا (يخطئ)
{
}
آخر
{
console.log (row_count) ،
}

    connection.close();
});

request.on('row', function(columns)
{
    columns.forEach((function(column)
    {
        console.log(column.value);
    }))
})

}

معلومات الوظيفة خطأ (معلومات)
{
var dd = معلومات ؛
console.log ('infoError =>' + info) ؛
}

تصحيح الوظيفة (رسالة)
{
var dd = رسالة ؛
console.log ('debug =>' + message) ؛
}

نهاية الوظيفة ()
{
فار dd = "" ؛
}

أقوم بتنفيذ "netstat -na" ، لكنني لم أجد منفذ UDP 1444

لا أرى أي اتصال بـ connection.exec...(request) في شفرتك. لذلك لم يتم تنفيذ الطلب. يتوافق هذا مع رسائل debug=> State change: ... . يتوقفون بمجرد اكتمال المصادقة.

آه ، حسنًا ، هذه هي الحيلة. شكرا جزيلا لك: د

أعتبر أن adviner و flybluewolf هما نفس الشخص ، وأن هذه المشكلة تتعامل مع مشكلة واحدة فقط؟
إذا كنت مخطئًا ، فلا تتردد في إعادة الفتح.

لا هما شخصان مختلفان. لقد بدأت المنشور والآن يعمل.

مرحبًا ، آسف لإحياء هذا الأمر ، لكني أواجه مشكلة في استخدام مقتطف الشفرة الأخير الذي نشره adviner (مع تغيير بيانات الاعتماد بشكل صحيح ، بالطبع). لا يمكنني أبدًا تجاوز مرحلة SentPreLogin. باستخدام نفس الكود ، كل ما أحصل عليه هو:

التصحيح => متصل بـ SERVERt: 1433
debug => تغيير الحالة: الاتصال -> SentPrelogin
التصحيح => تغيير الحالة: SentPrelogin -> SentLogin7WithStandardLogin
التصحيح => الاتصال بالخادم: 1433 مغلق
debug => تغيير الحالة: SentLogin7WithStandardLogin -> Final
التصحيح => الاتصال بالخادم: 1433 مغلق
debug => تغيير الحالة: نهائي -> نهائي

(تم حجب عنوان URL للخادم).

قاعدة البيانات قيد التشغيل في Azure ويمكنني الاتصال بها من عقدة تشغيل الجهاز.

سيكون موضع تقدير أي مساعدة.

كما أفهمها ، تتطلب قواعد بيانات Azure اتصالاً مشفرًا.
إذن ، من المفترض أنك تتصل بـ encrypt: true في خيارات الاتصال؟ أسأل لأن https://github.com/pekim/tedious/issues/65#issuecomment -11765693 قد علق بهذا.

لا يتحقق الرمز الذي تستخدمه من وجود خطأ في رد الاتصال ، الوظيفة connected . يجب عليك إصلاح ذلك ، حيث قد يتم الإبلاغ عن خطأ هناك.

تم قطع الاتصالات المشفرة المملة مع العقدة v0.10 (و v0.9). انظر # 86 لمزيد من المعلومات ، والالتزام الذي أعتقد أنه يحل المشكلة.

نفس الالتزام الذي يعمل على إصلاح مشكلة v0.10 ، يؤدي أيضًا إلى تعيين تشفير التشفير افتراضيًا إلى RC4-MD5 ، لأنني لم أتمكن من الحصول على اتصالات مشفرة تعمل مع DES-CBC3-SHA حتى الآن. وهذا ينطبق أيضًا على العقدة v0.8.

هل يمكنك محاولة استخدام أحدث رمز في الماجستير ، لالتقاط الإصلاح ، من فضلك؟

إذا استمر فشل ذلك ، فهل يمكنك وضع كل إخراج التصحيح في الجوهر أو Pastebin من فضلك؟ يجب أن تحصل على الكثير من التفاصيل ، بما في ذلك القوالب السداسية لحزم المواد الصلبة الذائبة. قد ترغب في تنقيح بعض التفاصيل من حزمة login7.

شكرا للاستجابة السريعة. لقد تجاوزت الخطأ السابق ، لكنني الآن أحصل على الإخراج التالي:

debug => متصل بـ XXX.database.windows.net:1433
debug => تغيير الحالة: الاتصال -> SentPrelogin
debug => تغيير الحالة: SentPrelogin -> SentTLSSSLNegotiation
debug => تفاوض TLS (RC4-MD5 ، TLSv1 / SSLv3)
debug => تغيير الحالة: SentTLSSSLNegotiation -> SentLogin7WithStandardLogin
infoError => [كائن كائن]
{"الرقم": 40531 ، "الحالة": 1 ، "الفئة": 11 ، "الرسالة": "لا يمكن تحديد اسم الخادم. يجب أن يظهر كأول مقطع من اسم نظام أسماء النطاقات (servername.database.windows.net) ). لا ترسل بعض المكتبات اسم الخادم ، وفي هذه الحالة يجب تضمين اسم الخادم كجزء من اسم المستخدم (اسم المستخدم @ اسم الخادم). بالإضافة إلى ذلك ، إذا تم استخدام كلا التنسيقين ، فيجب أن تتطابق أسماء الخادم. "،" serverName ":" "،" procName ":" "،" lineNumber ": 1 ،" الاسم ":" ERROR "،" الحدث ":" errorMessage "}
فشل عملية الدخول؛ يجب إرسال حدث خطأ أو أكثر في رسالة
debug => تغيير الحالة: SentLogin7WithStandardLogin -> Final
debug => الاتصال بـ XXXX.database.windows.net:1433 مغلق
debug => تغيير الحالة: نهائي -> نهائي

تم وضع علامة على اسم الخادم على أنه XXX (أفترض) ، وهو جزء من سلسلة الاتصال لـ azure db.

كانت المشكلة الأخيرة مشكلة في سلسلة الاتصال الخاصة بنا كل شيء يعمل الآن. شكرا لك!

رائع.
هل كان هذا مع أحدث كود من المعلم ، أم نسخة صادرة من مملة؟

استنساخ أحدث نسخة من السيد

الخبراء الأعزاء ،
لقد واجهت نفس الخطأ ولكن المشكلة هي أن خطئي يحدث بعد إنشاء اتصال ويقوم بإدراج ملفات كبيرة في قاعدة البيانات ، وليس لدي أي مشكلة مع الملفات الصغيرة:

إضافة البيانات إلى قاعدة البيانات
الحصول على أعمدة من ديسيبل
حصلت على أعمدة الجدول بنجاح
إضافة صفوف إلى قاعدة البيانات
تم إدراج الصفوف بنجاح
إضافة البيانات إلى قاعدة البيانات
الحصول على أعمدة من ديسيبل
حصلت على أعمدة الجدول بنجاح
إضافة صفوف إلى قاعدة البيانات
تم إدراج الصفوف بنجاح
إضافة البيانات إلى قاعدة البيانات
الحصول على أعمدة من ديسيبل
حصلت على أعمدة الجدول بنجاح
إضافة صفوف إلى قاعدة البيانات
تم إدراج الصفوف بنجاح
إضافة البيانات إلى قاعدة البيانات
الحصول على أعمدة من ديسيبل
حصلت على أعمدة الجدول بنجاح
إضافة صفوف إلى قاعدة البيانات
{[ConnectionError: Failed to connect to localhost: 1433 - connect EADDRINUSE 127 .0.0.1: 1433] name: 'ConnectionError' ، الرسالة: 'Failed to localhost: 1433 - connect EADDRINUSE 127.0.0.1:1 433' ، الرمز : "ESOCKET"}

نقدر دعمكم.

Beniy هل لديك رمز مثال يمكننا استخدامه لإعادة إنتاج هذا؟

عزيزي آرثرشرايبر ،
في الواقع ، لا يمكن أن تكون المشكلة مرتبطة بالكود لأنه في بعض الأحيان يتم تحليل ملف نصي وإدراجه في db ، ولكن في بعض الأحيان يظهر هذا الخطأ ، حتى مع نفس الملف ونفس الحالة ولكن في وقت مختلف.
أريد أن أعرف أي تبعيات أخرى لهذه المهمة؟

شكرا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

tvrprasad picture tvrprasad  ·  6تعليقات

SaloniSonpal picture SaloniSonpal  ·  5تعليقات

ghost picture ghost  ·  5تعليقات

ricklang picture ricklang  ·  9تعليقات

jstephens7 picture jstephens7  ·  5تعليقات