SQL Server Timeout pada upaya pertama

9

Saya mengalami masalah aneh di mana saya mencoba melampirkan SQL Server 2008 yang berjalan di komputer kedua (kedua mesin yang menjalankan Win7 64-bit), baik melalui Sumber Data di Visual Studio atau melalui konsol Manajemen SQL itu sendiri.

Pada upaya pertama untuk terhubung, waktu habis. Upaya kedua bekerja dengan baik.

Saya dapat mengakses share di komputer kedua tanpa kesulitan, sepertinya baru pertama kali saya mencoba terhubung ke SQL untuk setiap instance aplikasi. Artinya, jika saya membuka dua instance Visual Studio, keduanya akan gagal pada upaya pertama mereka untuk terhubung, tetapi berhasil pada yang kedua. Saya harus menghubungkan dua kali untuk setiap instance (terlepas dari urutan gagal / sukses dalam aplikasi lain).

Saya harap itu masuk akal.

Ada saran?

SergioL
sumber
Apa metode penamaan yang Anda gunakan untuk terhubung ke mesin lain, apakah Anda menggunakan alamat IP (yaitu 192.168.1.1) atau nama seperti: MySqlServer. Saya menduga ini adalah masalah resolusi nama, Anda dapat mengonfirmasi bahwa dengan memasukkan nama server Sql di file host Anda dalam hal ini masalah tersebut akan hilang.
Coding Gorilla
Dengan nama mesin, tapi itu di jaringan rumah saya dan saya dapat menekan bagiannya dengan menggunakan nama mesin. Hanya SQL yang memberi saya masalah.
SergioL

Jawaban:

6

Saya pikir saya menemukan solusinya, setidaknya dalam kasus saya ini berhasil. Saya menggunakan nama instance dan ini secara otomatis menyiratkan port dinamis untuk layanan server sql. Saya telah mengubah pengaturan dari dinamis ke port perbaikan dan kemudian membuka firewall pada port itu.

Manajer Konfigurasi SQL Server -> Konfigurasi Jaringan SQL Server -> Protokol untuk 'InstanceName' -> TCP / IP -> Properti -> Alamat IP -> IP Semua ->

Di sini Anda melihat dua opsi:

  • TCP Dynamic Ports: 51250 (dibuat secara acak)
  • TCP Port: kosong - saya taruh di sini 1433 dan kemudian saya membuka firewall (kalau-kalau belum dibuka). Anda dapat menempatkan port apa pun yang Anda inginkan (saya menempatkan 1433 karena itu satu-satunya instance. Dalam kasus beberapa instance, Anda harus memilih untuk setiap instance port yang berbeda dan kemudian membukanya di firewall)

Skrip yang digunakan untuk memudahkan tugas Anda membuka port yang telah saya unduh dari MS dan saya mereproduksi di sini (komentar dalam bahasa Jerman tetapi harus jelas):

@echo =========  Ports des SQL-Servers  ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer" 
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung" 
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker  
netsh firewall set portopening TCP 4022 "SQL-Service Broker" 
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC 
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC" 
@echo =========  Ports für Analysedienste  ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste" 
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser" 
@echo =========  Verschiedene Anwendungen  ==============
@echo Aktivieren von Port 80 für HTTP 
netsh firewall set portopening TCP 80 "HTTP" 
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL" 
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser" 
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE
radusun
sumber
2

Tebakan terbaik saya di sini adalah bahwa AUTO_CLOSE Anda telah dihidupkan untuk basis data. Ini berarti bahwa database perlu berputar ketika Anda terhubung, yang menyebabkan in-out time.

Dugaan kedua adalah mungkin terkait resolusi hostname. Jadi butuh waktu terlalu lama untuk menyelesaikan nama host pertama kali (dengan siaran mungkin?), Tetapi kemudian di-cache pada upaya koneksi berikutnya. Apa yang Anda gunakan untuk menyelesaikan host? apakah itu di DNS? Coba ubah string koneksi menjadi IP, format port. yaitu 192.168.100.100,1433

Anda juga dapat mencoba menjalankan ipconfig /flushdnssetelah upaya koneksi berhasil & lihat apakah Anda kemudian mendapatkan perilaku yang sama. Solusi cerdik adalah dengan menempatkan pencarian di file HOSTS Anda, tetapi Anda harus memperbaikinya dengan benar.

Nick Kavadias
sumber
Sudah disetel ke mati (0) di semua basis data. Namun, ini bukan hanya upaya pertama dari klien, ini adalah upaya pertama untuk setiap aplikasi yang berjalan pada klien (jadi upaya ke-2 untuk SQL Studio menghubungkan, saat sedang berjalan, saya memutar VS2010 gagal pada samb pertama, tetapi berhasil pada ... meskipun studio sudah terhubung dan berjalan).
SergioL
mungkin resolusi DNS / nama hostnya terkait? coba ubah string koneksi Anda untuk terhubung menggunakan sql server IP / port & lihat apakah hilang
Nick Kavadias
2

Terasa seperti tembakan panjang dalam gelap dengan penutup mata, tetapi mungkin bisa membantu. Ada utas kuno di forum Pengembang Microsoft SQL yang menjelaskan apa yang tampaknya menjadi masalah yang sama, bersama dengan kemungkinan perbaikan. Servernya menjalankan Windows Server 2008, tetapi mungkin juga relevan untuk pengaturan Win7 Anda.

Utas:

http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/58bd9c4d-0572-4567-8e32-82a7fd600022

Dari utas:

Ya, saya telah memperbaiki masalah ini.

Server windows saya 2008 dikonfigurasikan untuk menolak ikatan SASL LDAP (lihat peringatan 2886).

Karena saya telah mengonfigurasi server saya untuk tidak menolak ikatan semacam itu, koneksi sql server 2008 berfungsi dengan benar.

Anda dapat melihat Microsoft KB 935834 untuk info tentang memodifikasi pengaturan penandatanganan LDAP (tidak dapat menautkannya karena saya pengguna baru).

Semoga ini bisa membantu!

Simon Peak
sumber
0

Nonaktifkan firewall. Uji jaringan (ping). Mengendus lalu lintas jaringan ke server sql (gunakan wireshark )

bindbn
sumber
0

Bisakah Anda mencoba menjalankan SQL Profiler sebelum Anda terhubung untuk pertama kalinya dengan VS atau SSMS, dan melihat apa yang terjadi pada SQL Server?

Juga, sudahkah Anda memeriksa log peristiwa untuk melihat apakah ada yang sedang dicatat?

SQL3D
sumber