[MSSQL]-provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server


Chào các bạn,

Khi kết nối từ một ứng dụng vào Database đặt trên một server nào đó trong mạng LAN hoặc WAN. Chúng ta có thể gặp lỗi này. Lỗi này là một lỗi rất chung chung của Microsoft SQL Server khi không kết nối được với Database Engine.

2015-04-23_235839

MSSQL-Connect Errors

Nguyên nhân: Như các bạn đã biết, Microsoft SQL Server Database Engine hoạt động dựa trên protocol “TCP/IP” client/server. Database luôn luôn mở một port và lắng nghe các kết nối từ client vào, port mặc định của MSSQL là 1433. Vì một lý do nào đó, khi các client muốn kết nối vào Database Engine bằng các port này nhưng không có sự phản hồi về server.

1. Do đường truyền mạng : Bạn có thể test bằng cách Ping địa chỉ IP hoặc Host Name của máy chủ, lưu ý : Nếu hệ thống mạng của mạng sử dụng DC (Domain Controller) và máy client của bạn có Join vào Domain thì nên thiết lập địa chỉ IP tĩnh cho server và nên thiết lập Host Name của server bạn cũng là Alias trên Domain Controller. Nếu Ping thấy thông suốt có nghĩa là đường truyền mạng không có vấn đề. Chúng ta có thể loại trừ khả năng này

2. Kiểm tra port Database Engine trên máy chủ: Bạn có thể vào server, kiểm tra xem port chạy MSSQL có đang lắng nghe kết nối hay không. Dùng lệnh netstat -a
Nếu hình bên dưới port 1433 đang lắng nghe các ứng dụng từ client kết nối vào, chứng tỏ Database Engine đang chạy, chúng ta có thể loại trừ khả năng này
2015-04-24_001939

Hoặc dùng lệnh : netstat -na|find “1433”

2015-04-24_002817
3. Kiểm tra Firewall: Trong hai trường hợp trên, nếu bạn đã thử thành công hết, chứng tỏ đường mạng từ Client đến Server hoạt động, dịch vụ Database Engine hoạt động tốt. Vậy đường chuyền dữ liệu port 1433 của bạn từ Server đến client có thể bị chặn bởi Windows Firewall hoặc Firewall của một hãng thứ 3, Firewall của Antivirus v.v.v.
Đối với Firewall của Windows, bạn có thể làm theo hướng dẫn sau để mở port truy cập trên server.
Control panel/Windows Firewall
2015-04-24_003653

2015-04-24_004003

2015-04-24_004127

2015-04-24_004249

2015-04-24_004358

2015-04-24_004450

2015-04-24_004552

2015-04-24_004655

2015-04-24_004838

Tương tự phần outbound bạn cũng thiết lập mở port 1433 như phần Inbound

2015-04-24_005004

Thiết lập mở port xong, bạn thử kết nối lại với Server.

Kết luận:

Lỗi kết nối từ client đến Database Engine thường có rất nhiều nguyên nhân, các bạn nên xem lỗi chi tiết để biết cách khắc phục. Còn các lỗi chung chung các bạn có thể làm các bước kiểm tra như Cường đã giới thiệu như trên.

6 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s