2013-12-13 16 views
7

Tôi chỉ muốn biết chuỗi kết nối sql phù hợp với phiên bản máy chủ sql từ xa.Chuỗi kết nối phù hợp với máy chủ SQL từ xa cho C#

Đây là những gì tôi nhận được nhưng tôi có một số vấn đề

SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\PC-NAME\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password"); 

tôi đã nhận lỗi này ở # debugger C của tôi:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) 

Cảm ơn trước!

Trả lời

9

Từ nhận xét của bạn:

IP địa chỉ là địa chỉ IP tĩnh. Tôi đang cố gắng kết nối bên ngoài tòa nhà.

Nếu cơ sở dữ liệu bạn đang cố gắng kết nối nằm trên máy tính phía sau [router/firewall/modem] có địa chỉ đích, bạn sẽ cần sử dụng cổng chuyển tiếp trên [router/firewall/modem] để chuyển tiếp tất cả các kết nối trên cổng TCP 1433 đến máy đích.

Nếu bạn đang cố gắng kết nối với máy tính ở nhà sau modem ADSL có địa chỉ IP tĩnh, modem ADSL của bạn cần được cấu hình với cổng chuyển tiếp để kết nối cổng ngoài 1433 với cùng cổng trên địa chỉ nội bộ. Điều này phải được thực hiện trên modem và không thể được thực hiện chỉ bằng chuỗi kết nối.

Giả sử bạn có modem ADSL nghe trên 127.2.3.4 (địa chỉ không hợp lệ để chỉ trình diễn) và PC phía sau với địa chỉ IP là 192.168.0.100. Cấu hình modem để chuyển tiếp cổng 1433 đến 192.168.0.100:1433 (cách thức sẽ phụ thuộc vào thực hiện và mô hình modem). Sau đó, chuỗi kết nối của bạn sẽ là:

Data Source=127.2.3.4\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password 

Giả sử rằng SQLEXPRESS là trường hợp cơ sở dữ liệu duy nhất trên máy chủ, và vì cổng 1433 là mặc định, bạn có thể sử dụng đơn giản hơn:

Data Source=tcp:127.2.3.4;Initial Catalog=dbase;User ID=sa;Password=password 

Các đặc điểm kỹ thuật Network Library=DBMSSOCN được thay thế bằng tcp: và mặc định được giả định cho ví dụ và cổng.

+0

Thận trọng nếu tôi hỏi điều gì đã xảy ra với Địa chỉ IP 192.168.0.100 ?? Tôi không thấy điều đó trong chuỗi kết nối. Cảm ơn – Danny

+0

@Danny Địa chỉ máy chủ thực tế cần phải được đặt trong cổng chuyển tiếp trên modem/bộ định tuyến.Chuỗi kết nối yêu cầu máy khách SQL kết nối với modem, sau đó chuyển tiếp kết nối đến máy chủ nội bộ. Từ quan điểm của khách hàng, máy chủ ở địa chỉ công cộng chứ không phải địa chỉ riêng. – Corey

+0

@Corey Điều gì sẽ xảy ra nếu tôi kết nối với máy ảo trong Azure, nơi máy chủ SQL được cài đặt và quyền truy cập từ xa được cho phép? trong trường hợp này, tôi có thể đặt địa chỉ IP nếu VM trong nguồn dữ liệu không ??? –

1

Tại sao bạn không thử SqlConnection String Builder here.

2

Giải pháp: nếu bạn đang cung cấp máy từ xa IP address sau đó bạn không cần phải cung cấp hostname

Hãy thử này:

SqlConnection cs = new SqlConnection(@"Data Source=(IP Address)\SQLEXPRESS,1433;Network Library=DBMSSOCN;Initial Catalog=dbase;User ID=sa;Password=password"); 
+0

Xin chào Sir @Sudhakar cảm ơn bạn đã phản hồi. Địa chỉ IP là địa chỉ IP tĩnh. Tôi đang cố gắng kết nối bên ngoài tòa nhà. Vì vậy, tôi có nên chỉ định tên máy tính cho điều này? –

+0

@LucasJuan: bạn không cần phải cung cấp tên máy chủ IMO. –

Các vấn đề liên quan