Làm cách nào để kết nối SQL Server ODBC này hoạt động?


30

Lưu ý: Rõ ràng tôi đã thay đổi tên máy chủ và IP thành tên giả.

Đây là những gì đang xảy ra. Tôi đã có một máy chủ mà tôi đang gọi MYSERVER, đang chạy Microsoft SQL Server Express 2005. Ngay trên chính máy chủ này, tôi đã có một kết nối ODBC được thiết lập chỉ vào chính nó và nó đã hoạt động hoàn hảo. Tôi đăng nhập bằng Xác thực Máy chủ SQL (không phải xác thực Windows) và nó được thiết lập như sau:

Hình ảnh kết nối ODBC tốt

Như tôi đã nói, một trong những hoạt động. Nhưng tiếp theo, tôi đã có một máy tính khác thuộc miền hoàn toàn khác / không phải trên mạng nội bộ, cần truy cập cùng máy chủ SQL này được lưu trữ trên MYSERVER. Bởi vì trên một miền khác, nó không nhận ra tên "MYSERVER"; Tôi phải trỏ nó vào địa chỉ IP của MYSERVER, mà chúng tôi sẽ nói là 123.456.789.012. Nhưng kết nối ODBC dường như không hoạt động ở đó. Tôi đã thử thiết lập nó như thế này:

Hình ảnh kết nối ODBC xấu

Điều này không hoạt động. Khi tôi nhập tên người dùng và mật khẩu và nhấn Next, nó sẽ dừng trong 10 đến 20 giây và sau đó quay lại với lỗi sau:

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

Nếu tôi thử điều tương tự, nhưng thay đổi "máy chủ" từ 123.456.789.012\SQLEXPRESScũ thành đơn giản 123.456.789.012, tôi sẽ gặp một lỗi khác:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

Bây giờ tôi biết bạn đang nghĩ gì. Bạn có thể nghĩ, "duh, có lẽ bạn đã không mở tường lửa cho cổng 1433, giả." Ngoại trừ tôi đã làm, và tôi đã xác minh điều này, vì tôi có thể chạy thành công :

telnet 123.456.789.012 1433

... từ dòng lệnh tất cả những gì tôi muốn. Vì vậy, tôi không biết phải làm gì. Tôi biết SQL Server tồn tại, hoạt động và kết nối ODBC có thể được thiết lập đúng; Tôi chỉ không chắc chắn những gì tôi đã sai trong cài đặt kết nối của mình đó là những lỗi này. Dựa trên lỗi sau mà tôi đã liệt kê, có vẻ như nó có thể kết nối với máy chủ, nhưng đơn giản là không thể tìm thấy trường hợp (vì tôi không chỉ định một lần đó). Vì vậy, điều đó có nghĩa là tôi chỉ cần sử dụng một số cú pháp khác nhau để chỉ định IP cùng với một tên thể hiện? Tôi làm gì? Cảm ơn trước.

Câu trả lời:


18

Các ống được đặt tên và giao thức TCIP cho máy chủ SQL 2005 bị tắt theo mặc định. Bạn đã kích hoạt chúng trong "Trình quản lý cấu hình máy chủ SQL" chưa? Bạn có thể tìm thấy các giao thức trong cấu hình Mạng máy chủ SQL và trong cấu hình xx máy khách SQL Native.

Kết nối trên máy chủ tự hoạt động nhờ giao thức "Bộ nhớ chia sẻ".


9
Tôi chấp nhận câu trả lời của bạn vì nó đưa tôi đi đúng hướng. Trong Trình quản lý cấu hình máy chủ SQL, TCP / IP đã được bật tất cả cùng trong "Cấu hình mạng SQL Server 2005> Giao thức cho SQLEXPRESS" và "Cấu hình máy khách gốc SQL> Giao thức máy khách". Đặt tên ống đã được kích hoạt sau này. Tôi đã kích hoạt nó trước đây, nhưng điều đó dường như không giúp được gì (các thông báo lỗi tương tự). Cuối cùng, tôi đã chuyển nguồn ODBC sang sử dụng trình điều khiển "SQL Client Client" thay vì trình điều khiển "SQL Server" và cuối cùng DID hoạt động.
soapergem

Cảm ơn bạn SoaperGEM! Tôi chưa bao giờ nghĩ rằng đã thử SQL Native Client! Làm việc như người ở!
Phillip Senn

5

Bạn đã kích hoạt dịch vụ Trình duyệt SQL Server theo Cách cấu hình SQL Server 2005 để cho phép kết nối từ xa chưa?

Nếu bạn đang chạy SQL Server 2005 bằng cách sử dụng tên đối tượng và bạn không sử dụng số cổng TCP / IP cụ thể trong chuỗi kết nối của mình, bạn phải kích hoạt dịch vụ Trình duyệt SQL Server để cho phép kết nối từ xa. Ví dụ: SQL Server 2005 Express được cài đặt với tên ví dụ mặc định là Tên máy tính \ SQLEXPRESS.


Việc kết nối với máy chủ \ dụ trên cục bộ có sử dụng một cơ chế khác với từ xa không ??
Sam

@Sam xem Hakan Winther trả lời.
Sim

4

Chuỗi này đã sửa cùng một thông báo lỗi cho tôi khi sử dụng Access để kết nối với máy chủ MSSQL 2008. MSSQL 2005 và trước đó hoạt động tốt khi chỉ sử dụng tên máy tính trong chuỗi kết nối, nhưng tôi đã phải thay đổi thành chuỗi kết nối trong Access thành dạng đầy đủ khi phiên bản được nâng cấp lên 2008:

servername\instancename,portnumber


2
Điều đó đã làm điều đó cho tôi, ngoại trừ tôi không cần số cổng.
bgmCoder

2

Tôi cũng gặp vấn đề tương tự và quản lý để giải quyết nó bằng cách thay đổi trình điều khiển SQL thành trình điều khiển SQL Client Client. Điều này thật kỳ lạ vì trong trường hợp của tôi, nó đã hoạt động tốt trong nhiều năm và sau đó chỉ dừng hoạt động. Tôi nghi ngờ đây là một cái gì đó dọc theo dòng người lái xe bị hỏng, có lẽ việc khôi phục MDAC có thể hỗ trợ, nhưng hiện tại tôi rất vui vì nó đang hoạt động!


1

Nó sẽ nhận ra tên máy chủ nếu nó đủ điều kiện? Nếu đó là MYSERVER.domain.com? Chúng tôi đã phải làm điều đó với SQL Server khi kết nối từ một miền khác. Nếu bạn có thể kết nối ODN System DSN khi bạn kiểm tra nguồn dữ liệu, bạn đang tiến triển. Nếu nó không kết nối trong thiết lập ODBC, trước tiên bạn phải sửa nó.


Đó chính xác là những gì tôi đang cố gắng thực hiện - để DSN System DSN kết nối ở nơi đầu tiên khi tôi kiểm tra nguồn dữ liệu. Vì vậy, tôi đã thử đề xuất của bạn, thử cả hai MYSERVER.domain.com\SQLEXPRESSMYSERVER.domain.com, nhưng cả hai đều cho tôi các lỗi tương tự tôi liệt kê ở trên, tương ứng.
soapergem

Tại một dấu nhắc lệnh trên loại máy tính khác "nslookup MYSERVER.domain.com" - điều đó có giải quyết đúng địa chỉ IP (123.456.789.012) không?
Sim

@Sim - Có, lệnh đó không giải quyết đúng.
soapergem

1

Bạn có đang sử dụng các đường ống được đặt tên hoặc TCP trên kết nối ODBC không hoạt động? TCP có được kích hoạt không?


1

Hãy chắc chắn rằng bạn đã kích hoạt các kết nối tcp từ xa cho máy chủ SQL.


0

Chỉ là một cú đánh tự nhiên ở đây nhưng điều gì xảy ra nếu bạn đặt dấu gạch chéo kép trước tên máy chủ hoặc địa chỉ IP? Dường như với tôi rằng nó thường được yêu cầu cho hầu hết các kết nối Windows / Microsoft khác.


Thử kết quả dấu gạch chéo kép cho cùng một lỗi 1326 (lần đầu tiên tôi liệt kê).
soapergem

0

Tôi đã có một vấn đề tương tự. Trong trường hợp của tôi, một sw khác cấu hình cài đặt ODBC để tôi không thể thay đổi trình điều khiển. Tôi đã giải quyết trường hợp của tôi như thế này:

  1. Đặt cài đặt TCP / IP cho máy chủ để sử dụng cổng 1433
  2. Trên máy khách, nhập địa chỉ máy chủ như: 192.168.1.5,1433 (không có tên ví dụ)

Sau đó, nó bắt đầu làm việc. Hệ điều hành khách: Trình điều khiển Win7 x64: sqlsrv32.dll


0

Để biết giá trị của nó, tôi bắt đầu gặp lỗi này trên một kết nối đã hoạt động trước đó. Hóa ra dịch vụ MSSQL $ SQLEXPRESS bằng cách nào đó đã dừng lại. Khởi động lại nó đã khắc phục vấn đề.


0

Tôi cũng gặp vấn đề này và nó cũng đơn giản như thế này: máy chủ được liệt kê là máy chủ DNS chính cho máy chủ này đã bị xóa và ứng dụng không còn có thể giải quyết chính xác tên của máy chủ SQL trên mạng. Mọi thứ ngay lập tức bắt đầu hoạt động trở lại khi tôi sửa máy chủ DNS cục bộ thành một máy chủ hoạt độ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.