Hết thời gian chờ máy chủ SQL trong lần thử đầu tiên


9

Tôi gặp một vấn đề lạ khi tôi cố gắng đính kèm vào SQL Server 2008 đang chạy trên máy tính thứ hai (cả hai máy chạy Win7 64 bit), thông qua Nguồn dữ liệu trong Visual Studio hoặc thông qua chính bảng điều khiển SQL Management.

Trong lần thử đầu tiên để kết nối, nó hết thời gian. Nỗ lực thứ hai hoạt động tốt.

Tôi có thể truy cập vào chia sẻ trên máy tính thứ hai mà không gặp bất kỳ khó khăn nào, đây chỉ là lần đầu tiên tôi cố gắng kết nối với SQL cho từng phiên bản ứng dụng. Đó là, nếu tôi mở hai phiên bản Visual Studio, cả hai sẽ thất bại trong lần thử kết nối đầu tiên, nhưng thành công vào lần thứ hai. Tôi phải kết nối hai lần cho mỗi trường hợp (bất kể chuỗi thất bại / thành công trong bất kỳ ứng dụng nào khác).

Tôi hy vọng điều đó đúng.

Có lời khuyên nào không?


Bạn đang sử dụng phương thức đặt tên nào để kết nối với máy khác, bạn đang sử dụng địa chỉ IP (tức là 192.168.1.1) hoặc một tên như: MySqlServer. Tôi nghi ngờ đây là vấn đề giải quyết tên, bạn có thể xác nhận rằng bằng cách đặt tên của máy chủ Sql trong tệp máy chủ của bạn trong trường hợp sự cố sẽ biến mất.
Mã hóa Gorilla

Theo tên máy, nhưng nó có trên mạng gia đình của tôi và tôi có thể chia sẻ cổ phiếu trên đó bằng tên máy. Đó chỉ là SQL mang đến cho tôi các vấn đề.
SergioL

Câu trả lời:


6

Tôi nghĩ rằng tôi đã tìm thấy giải pháp, ít nhất là trong trường hợp của tôi nó đang hoạt động. Tôi đang sử dụng tên dụ và điều này tự động ngụ ý một cổng động cho dịch vụ máy chủ sql. Tôi đã thay đổi cài đặt từ động sang cổng sửa lỗi và sau đó mở tường lửa trên cổng đó.

Trình quản lý cấu hình máy chủ SQL -> Cấu hình mạng máy chủ SQL -> Giao thức cho 'InstanceName' -> TCP / IP -> Thuộc tính -> Địa chỉ IP -> Tất cả IP ->

Ở đây bạn thấy hai tùy chọn:

  • Cổng động TCP: 51250 (được tạo ngẫu nhiên)
  • Cổng TCP: trống - Tôi đặt ở đây 1433 và sau đó tôi mở tường lửa (trong trường hợp nó chưa được mở). Bạn có thể đặt bất cứ cổng nào bạn muốn (tôi đặt 1433 vì đó là trường hợp duy nhất. Trong trường hợp có nhiều trường hợp, bạn nên chọn cho mỗi trường hợp một cổng khác nhau và sau đó mở chúng trong tường lửa)

Kịch bản được sử dụng để dễ dàng thực hiện nhiệm vụ của bạn là mở các cổng tôi đã tải xuống từ MS và tôi đang sao chép nó ở đây (ý kiến ​​bằng tiếng Đức nhưng chúng nên rõ ràng):

@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

2

Dự đoán tốt nhất của tôi ở đây là bạn đã bật AUTO_CLOSE cho cơ sở dữ liệu. Điều này có nghĩa là cơ sở dữ liệu cần phải quay vòng khi bạn kết nối, đây là nguyên nhân gây ra thời gian chờ kết thúc.

Dự đoán thứ hai là nó có thể là độ phân giải tên máy chủ liên quan. Vì vậy, nó mất quá nhiều thời gian để giải quyết tên máy chủ lần đầu tiên (bằng cách phát sóng có thể?), Nhưng sau đó được lưu trữ trong các lần thử kết nối tiếp theo. Bạn đang sử dụng gì để giải quyết máy chủ? Có trong DNS không? Hãy thử thay đổi chuỗi kết nối thành định dạng IP, cổng. tức là 192.168.100.100,1433

Bạn cũng có thể thử chạy ipconfig /flushdnssau khi thử kết nối thành công & xem bạn có hành vi tương tự không. Cách giải quyết khéo léo là đặt tra cứu vào tệp HOSTS của bạn, nhưng bạn nên sửa nó đúng cách.


Đã được đặt thành tắt (0) trên tất cả các cơ sở dữ liệu. Tuy nhiên, đây không chỉ là lần thử đầu tiên từ máy khách, đây là lần thử đầu tiên cho mỗi ứng dụng chạy trên máy khách (vì vậy lần thử thứ 2 cho SQL Studio kết nối, trong khi chạy, tôi đã quay lại VS2010, nó đã thất bại trong lần kết nối đầu tiên, nhưng thành công vào lần thứ 2 ... mặc dù studio đã được kết nối và chạy).
SergioL

có lẽ độ phân giải DNS / tên máy chủ của nó liên quan? hãy thử thay đổi chuỗi kết nối của bạn để kết nối bằng IP / cổng máy chủ sql và xem nếu nó biến mất
Nick Kavadias

2

Cảm thấy giống như một cú sút xa trong bóng tối khi bịt mắt, nhưng nó có thể giúp ích. Có một chủ đề cũ trên các diễn đàn Microsoft SQL Developer mô tả những gì có vẻ là cùng một vấn đề, cùng với một sửa chữa có thể. Máy chủ của anh ấy đang chạy Windows Server 2008, nhưng cũng có thể phù hợp với Win7 của bạn được thiết lập.

Chủ đề:

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

Từ chủ đề:

Vâng, tôi đã khắc phục vấn đề này.

Máy chủ windows 2008 của tôi đã được cấu hình để từ chối các liên kết LDL của SASL (xem cảnh báo 2886).

Vì tôi đã cấu hình máy chủ của mình để không từ chối các liên kết như vậy, các kết nối máy chủ sql 2008 hoạt động chính xác.

Bạn có thể xem Microsoft KB 935334 để biết thông tin về sửa đổi cài đặt ký LDAP (không thể liên kết với nó với tư cách là người dùng mới).

Hy vọng nó giúp!


0

Vô hiệu hóa tường lửa. Kiểm tra mạng (ping). Đánh hơi lưu lượng truy cập mạng đến máy chủ sql (sử dụng wireshark )


0

Bạn có thể thử chạy SQL Profiler trước khi kết nối lần đầu tiên với VS hoặc SSMS không và xem điều gì đang xảy ra trên SQL Server?

Ngoài ra, bạn đã kiểm tra nhật ký sự kiện để xem có gì đang được ghi lại không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.