Tedious: SQL Server 2012 ECONNREFUSED

Dibuat pada 8 Des 2012  ·  20Komentar  ·  Sumber: tediousjs/tedious

Menggunakan nodejs terbaru dan versi membosankan dan kode berikut:

var Koneksi = membutuhkan('membosankan').Koneksi;
var Permintaan = membutuhkan('membosankan').Permintaan;

var konfigurasi =
{
server: '192.168.1.113',
namapengguna: 'namapenggunasaya',
kata sandi: 'myPassword',
pilihan:
{
basis data: 'Database Saya',
pelabuhan: '1433',
mengenkripsi: benar,
driver: 'SQL Server Native Client 11.0'
},
debug:
{
paket: benar,
data: benar,
muatan: benar,
tanda: benar,
log: benar
}
};

var koneksi = Koneksi baru(config);

connection.on('koneksi', terhubung);
connection.on('infoMessage', infoError);
connection.on('errorMessage', infoError);
koneksi.on('akhir', akhir);
connection.on('debug', debug);

fungsi terhubung (err)
{
console.log('terhubung=> ' + err);
}

fungsi infoError(info)
{
console.log('infoError=> ' + info);
}

fungsi debug (pesan)
{
console.log('debug=> ' + pesan);
}

fungsi akhir()
{
}

Saya mendapatkan kesalahan berikut setelah saya menjalankannya:

simpul test_sqlserver_tedious.js
debug=> koneksi ke 192.168.1.113:1433 - gagal Kesalahan: sambungkan ECONNREFUSED
debug => Perubahan status: Menghubungkan -> Final
debug=> koneksi ke 192.168.1.113:1433 ditutup
debug => Perubahan status: Final -> Final

Ada ide? Saya dapat membantu Anda menguji sumbernya jika Anda menunjukkan caranya.

Terima kasih

Komentar yang paling membantu

ECONNREFUSED menunjukkan bahwa 192.168.1.113 tidak mendengarkan pada port 1433.

Apakah instance SQL Server pasti mengaktifkan TCP?
Bisakah Anda melakukan telnet ke port 1433 pada 192.168.1.113 (dari sistem yang Anda gunakan membosankan)? Jika tidak, dapatkah Anda melakukan telnet ke port 1433 langsung dari 192.168.1.113? Jika tidak, maka itu menunjukkan bahwa SQL Server tidak mendengarkan pada port. Jika ya, maka itu menunjukkan bahwa sesuatu (mungkin firewall) adalah penyebab masalahnya.

Semua 20 komentar

ECONNREFUSED menunjukkan bahwa 192.168.1.113 tidak mendengarkan pada port 1433.

Apakah instance SQL Server pasti mengaktifkan TCP?
Bisakah Anda melakukan telnet ke port 1433 pada 192.168.1.113 (dari sistem yang Anda gunakan membosankan)? Jika tidak, dapatkah Anda melakukan telnet ke port 1433 langsung dari 192.168.1.113? Jika tidak, maka itu menunjukkan bahwa SQL Server tidak mendengarkan pada port. Jika ya, maka itu menunjukkan bahwa sesuatu (mungkin firewall) adalah penyebab masalahnya.

Saya mendapatkan kesalahan:

debug=> koneksi ke undefined:1433 - gagal Kesalahan: sambungkan ECONNREFUSED
debug => Perubahan status: Menghubungkan -> Final
debug=> koneksi ke undefined: 1433 ditutup
debug => Perubahan status: Final -> Final

    debug=> connection to undefined:1433 closed

undefined terlihat mencurigakan. Saya berharap untuk melihat nama server atau alamat IP di sana.

dbServer: 192.168.11.8\SQLEXPRESS2008
dbPort: 1433

@flybluewolf tolong lihat masalah #68, karena menurut saya jawaban saya relevan.

OK sepertinya terhubung sekarang. Tetapi ketika saya mencoba melakukan pemilihan sederhana, itu hanya hang.

Berikut adalah keluaran debugnya:

debugger mendengarkan pada port 51981
debug=> terhubung ke 127.0.0.1:1433
debug=> Perubahan status: Menghubungkan -> SentPrelogin
debug=> Perubahan status: SentPrelogin -> SentLogin7WithStandardLogin
infoError=> [objek Obyek]
infoError=> [objek Obyek]
debug=> Ukuran paket berubah dari 4096 menjadi 4096
debug=> Perubahan status: SentLogin7WithStandardLogin -> LoggedInSendingInitialSql
debug=> Perubahan status: LoggedInSendingInitialSql -> LoggedIn

Ini kode saya:

var Koneksi = membutuhkan('membosankan').Koneksi;
var Permintaan = membutuhkan('membosankan').Permintaan;

var konfigurasi =
{
server: "127.0.0.1",
nama pengguna: "nama pengguna",
kata sandi: "kata sandi pengguna",
basis data: "Database Saya",
pilihan:
{
basis data: "Database Saya",
// port: "1433",
//enkripsi: benar,
// driver: "SQL Server Native Client 11.0"
},
debug:
{
paket: benar,
data: benar,
muatan: benar,
tanda: benar,
log: benar
}
};

var koneksi = Koneksi baru(config);

connection.on('koneksi', terhubung);
connection.on('infoMessage', infoError);
connection.on('errorMessage', infoError);
koneksi.on('akhir', akhir);
connection.on('debug', debug);

fungsi terhubung (err)
{
eksekusiPernyataan();
}

fungsi eksekusiPernyataan()
{
var request = new Request("Pilih * dari Property.PropertyGroups", function(err, row_count)
{
jika (kesalahan)
{
}
lain
{
console.log(row_count);
}

    connection.close();
});

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

}

fungsi infoError(info)
{
var dd = info;
console.log('infoError=> ' + info);
}

fungsi debug (pesan)
{
var dd = pesan;
console.log('debug=> ' + pesan);
}

fungsi akhir()
{
var dd = '';
}

Saya menjalankan 'netstat -na', tetapi saya tidak menemukan port UDP 1444

Saya tidak melihat panggilan ke connection.exec...(request) dalam kode Anda. Jadi permintaan tidak dijalankan. Itu konsisten dengan pesan debug=> State change: ... . Mereka berhenti setelah otentikasi selesai.

Ugh, OK, itu berhasil. Terima kasih banyak :D

Saya menganggap bahwa @adviner dan @flybluewolf adalah orang yang sama, dan masalah ini hanya berurusan dengan satu masalah?
Jika saya salah, silakan buka kembali.

Tidak, mereka adalah dua orang yang berbeda. Saya memulai posting dan sekarang membuatnya berfungsi.

Halo, maaf telah menghidupkan kembali ini, tetapi saya mendapatkan masalah saat menggunakan cuplikan kode terakhir yang diposting oleh @adviner (tentu saja dengan kredensial yang diubah dengan benar). Saya tidak pernah bisa melewati fase SentPreLogin. Menggunakan kode yang sama, semua output yang saya dapatkan adalah:

debug=> terhubung ke SERVERt: 1433
debug=> Perubahan status: Menghubungkan -> SentPrelogin
debug=> Perubahan status: SentPrelogin -> SentLogin7WithStandardLogin
debug=> koneksi ke SERVER: 1433 ditutup
debug=> Perubahan status: SentLogin7WithStandardLogin -> Final
debug => koneksi ke SERVER: 1433 ditutup
debug => Perubahan status: Final -> Final

(url server dikaburkan).

Basis data berjalan di Azure dan saya dapat melakukan telnet ke sana dari mesin yang menjalankan node.

Bantuan apa pun akan dihargai.

Seperti yang saya pahami, database Azure memerlukan koneksi terenkripsi.
Jadi mungkin Anda terhubung dengan encrypt: true dalam opsi koneksi? Saya bertanya karena https://github.com/pekim/tedious/issues/65#issuecomment -11765693 telah berkomentar.

Kode yang Anda gunakan tidak memeriksa kesalahan dalam panggilan balik Connection, fungsi connected . Anda harus memperbaikinya, karena Anda mungkin mendapatkan kesalahan yang dilaporkan di sana.

Koneksi membosankan terenkripsi dengan node v0.10 (dan v0.9) terputus. Lihat #86 untuk info lebih lanjut, dan komit yang saya yakini dapat memperbaiki masalah.

Komit yang sama yang memperbaiki masalah v0.10, juga default cipher enkripsi ke RC4-MD5, karena saya belum berhasil mendapatkan koneksi terenkripsi bekerja dengan DES-CBC3-SHA. Ini berlaku untuk simpul v0.8 juga.

Bisakah Anda mencoba menggunakan kode terbaru di master, untuk mengambil perbaikannya?

Jika itu masih gagal, bisakah Anda memasukkan semua output debug ke Gist atau pastebin? Anda harus mendapatkan banyak detail, termasuk hex dump dari paket TDS. Anda mungkin ingin menyunting beberapa detail dari paket login7.

Terima kasih atas respon yang cepat. Saya melewati kesalahan sebelumnya, tetapi sekarang saya mendapatkan output berikut:

debug=> terhubung ke XXX.database.windows.net:1433
debug=> Perubahan status: Menghubungkan -> SentPrelogin
debug=> Perubahan status: SentPrelogin -> SentTLSSSLNegotiation
debug=> TLS dinegosiasikan (RC4-MD5, TLSv1/SSLv3)
debug=> Perubahan status: SentTLSSSLNegotiation -> SentLogin7WithStandardLogin
infoError=> [objek Obyek]
{"number":40531,"state":1,"class":11,"message":"Nama server tidak dapat ditentukan. Itu harus muncul sebagai segmen pertama dari nama dns server (servername.database.windows.net ). Beberapa perpustakaan tidak mengirimkan nama server, dalam hal ini nama server harus disertakan sebagai bagian dari nama pengguna (namapengguna@namaserver). Selain itu, jika kedua format digunakan, nama server harus cocok."," serverName":"","procName":"","lineNumber":1,"name":"ERROR","event":"errorMessage"}
Gagal masuk; satu atau lebih errorMessage event seharusnya sudah dipancarkan
debug=> Perubahan status: SentLogin7WithStandardLogin -> Final
debug=> koneksi ke XXXX.database.windows.net:1433 ditutup
debug => Perubahan status: Final -> Final

Nama server ditandai sebagai XXX (saya berasumsi), dan itu adalah bagian dari string koneksi untuk db Azure.

Masalah terakhir adalah masalah dengan string koneksi kami Semuanya berfungsi sekarang. Terima kasih!

Fantastis.
Apakah ini dengan kode terbaru dari master, atau versi rilis yang membosankan?

Kloning versi terbaru dari master

Pakar yang terhormat,
Saya telah menghadapi kesalahan yang sama tetapi masalahnya adalah kesalahan saya terjadi setelah koneksi dibuat dan memasukkan file besar ke database, saya tidak punya masalah dengan file kecil:

menambahkan data ke database
mendapatkan kolom dari db
berhasil mendapatkan kolom tabel
menambahkan baris ke DB
baris berhasil dimasukkan
menambahkan data ke database
mendapatkan kolom dari db
berhasil mendapatkan kolom tabel
menambahkan baris ke DB
baris berhasil dimasukkan
menambahkan data ke database
mendapatkan kolom dari db
berhasil mendapatkan kolom tabel
menambahkan baris ke DB
baris berhasil dimasukkan
menambahkan data ke database
mendapatkan kolom dari db
berhasil mendapatkan kolom tabel
menambahkan baris ke DB
{ [ConnectionError: Failed to connect to localhost:1433 - connect EADDRINUSE 127 .0.0.1:1433] name: 'ConnectionError', pesan: 'Failed to connect to localhost:1433 - connect EADDRINUSE 127.0.0.1:1 433', code : 'ESOCKET' }

Dukungan Anda dihargai.

@Beniy Apakah Anda memiliki contoh kode yang dapat kami gunakan untuk mereproduksi ini?

Arthurschreiber yang terhormat,
Sebenarnya masalahnya tidak terkait dengan kode karena kadang-kadang mengurai file teks dan memasukkan ke db tetapi kadang-kadang menunjukkan kesalahan itu, bahkan dengan file yang sama dan kondisi yang sama tetapi dalam waktu yang berbeda.
Saya ingin tahu dependensi lain untuk tugas ini?

Terima kasih

Apakah halaman ini membantu?
0 / 5 - 0 peringkat