2013-04-11 58 views
50

Số lần thử ban đầu

Tôi có máy ảo Azure với Windows Server 2012, mà tôi vừa cài đặt Cơ sở dữ liệu SQL Server 2012 Express thành phần. Sau đó, tôi làm theo hướng dẫn here để kết nối từ xa với SQL Server Management Studio.Sử dụng SQL Server Management Studio để kết nối từ xa với phiên bản SQL Server Express được lưu trữ trên Máy chủ Azure ảo

  1. Create a TCP endpoint for the virtual machine
  2. Open TCP ports in the Windows firewall
  3. Configure SQL Server to listen on the TCP protocol
  4. Configure SQL Server for mixed mode authentication
  5. Create SQL Server authentication logins
  6. Determine the DNS name of the virtual machine
  7. Connect to the Database Engine from another computer

Sau bước Bảy tôi nhận được lỗi sau:

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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 53)

Tôi cần làm gì khác để cấu hình trước khi kết nối từ xa?

Khắc phục sự cố

Tôi đã làm theo hướng dẫn khắc phục sự cố here. Mỗi blockquote dưới đây là một bước mô tả rằng liên kết đó.

Confirm the instance of the SQL Server Database Engine is installed and running.

Xong. Chúng tôi đã cài đặt SQL Server Express và nó đang chạy dưới dạng một phiên bản có tên SQLEXPRESS.

If you are attempting to connect to a named instance, make sure the SQL Server Browser service is running.

Xong. Chúng tôi đã làm theo các bước here để bật dịch vụ Trình duyệt SQL Server.

Get the IP Address of the computer.

Xong. Chúng ta sẽ sử dụng chúng sau này để kiểm tra kết nối và có thể thiết lập một cổng tĩnh cho SQLEXPRESS.

10.241.62.155

fe80 :: 45C: 8c29: e19f: f78b% 15

Get the TCP port number used by SQL Server.

Xong. Nhật ký máy chủ SQL Server Management Studio cho thấy máy chủ đang nghe trên cổng 49169.

Enable Protocols

Xong. Chúng tôi đã kích hoạt TCP/IP trong trình quản lý cấu hình, nhưng chúng tôi đã khởi động lại dịch vụ SQL Server chỉ trong trường hợp.

Testing TCP/IP Connectivity

Xong. Chúng tôi sử dụng tcping.exe để kiểm tra kết nối (cmd ping không hoạt động một cách nhanh chóng với Azure.) Chúng tôi đã có thể kết nối với cổng 80.

  • tcping.exe buddha.cloudapp.net> thành công
  • phật tcping.exe .cloudapp.net 80> thành công

Testing a Local Connection

Xong. Chúng tôi đã sử dụng sqlcmd.exe từ dấu nhắc lệnh và có thể kết nối cục bộ qua TCP bằng tên người dùng và mật khẩu.

  • sqlcmd -S Phật \ SQLEXPRESS (thành công thông qua giao thức chia sẻ bộ nhớ)
  • sqlcmd -S tcp: Phật \ SQLEXPRESS (thành công qua TCP)
  • sqlcmd -S tcp: Phật \ SQLEXPRESS -U sa - P (thành công qua TCP với tên người dùng)
  • sqlcmd -S tcp: 10.241.62.155 \ SQLEXPRESS -U sa -P (thành công với chỉ IP nội bộ)

Opening a Port in the Firewall

chúng tôi mở cổng mà chúng tôi SQL EXPRESS lắng nghe. Các nhật ký máy chủ (ở trên) cho thấy SQLEXPRESS đang lắng nghe trên cổng 49169, nhưng đây chỉ là một trong nhiều cổng động và chúng tôi muốn thiết lập cổng tĩnh 1435.

  • Sử dụng WF.msc để tạo một thư đến quy tắc TCP cho cổng 1435.
  • Sử dụng Quản lý Azure Portal để tạo ra một thiết bị đầu cuối TCP cho cổng 1435.

hướng dẫn Các xử lý sự cố cũng nói:

If you are connecting to a named instance or a port other than TCP port 1433, you must also open the UDP port 1434 for the SQL Server Browser service.

Kể từ w e đang kết nối SQLEXPRESS (một cá thể có tên), chúng ta cần mở cổng 1434 cho UDP.

  • Sử dụng wf.msc để tạo ra một inbound UCP quy tắc cho cổng 1434.
  • Sử dụng Quản lý Azure Portal để tạo ra một UDP endpoint cho cổng 1434

Nghiên cứu sâu hơn về kết nối với trường hợp được đặt tên cho thấy các vấn đề cổng động. Lý do tại sao chúng tôi đang sử dụng cổng 1435 (tĩnh) thay vì cổng 49169 (một trong nhiều tùy chọn hiệu quả.)

Instances of SQL Server Express, SQL Server Compact, and named instances of the Database Engine use dynamic ports. To configure these instances to use a specific port, see Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager). and here .

Xong. Chúng tôi đã đi đến SQL Configuration Manager> Cấu hình mạng SQL Server> Giao thức cho SQLEXPRESS> TCP/IP, chúng tôi đã làm như sau.

Tab giao thức> Nghe tất cả> KHÔNG.

IP Addresses Tab> cho mỗi địa chỉ được liệt kê

  • Enabled> Có
  • TCP cổng động> Trống (xóa zero) TCP Port
  • > 1435 (hoặc lựa chọn của bạn)

Sau khi khởi động lại dịch vụ SQLEXPRESS, chúng tôi lại tìm trong nhật ký SQL Server Management Studio và thấy rằng Máy chủ đang nghe trên cổng 1435 !!! Hoan hô!

Testing the Connection

Xong. Chúng tôi đã mở SQL Server Management Studio trên máy tính cục bộ (không phải Azure) của chúng tôi và được kết nối.

  • buddha.cloudapp.net, 1435 OR buddha.cloudapp.\ SQLEXPRESS ròng
  • sa
  • mật khẩu

thành công.

+3

Thật đáng kinh ngạc khi liệt kê tất cả các bước và nỗ lực. –

+2

Bạn vừa mới cứu tôi rất nhiều thời gian! Chìa khóa cho tôi là cuối cùng: Tab giao thức> Nghe tất cả> KHÔNG. Tôi không phải thay đổi IP từ năm 1433, nhưng tôi đã xóa 0 từ Cổng động để có biện pháp tốt. Tôi cho rằng các vấn đề của tôi bắt nguồn từ tất cả các giao thức được liệt kê khác đang lắng nghe. Làm tốt lắm! – hiro77

Trả lời

15

Dưới đây là ba trang web mà chúng tôi tìm thấy câu trả lời. Phần khó nhất là thiết lập các cổng tĩnh cho SQLEXPRESS.

Provisioning a SQL Server Virtual Machine on Windows Azure. Những hướng dẫn ban đầu này cung cấp 25% câu trả lời.

How to Troubleshoot Connecting to the SQL Server Database Engine. Đọc kỹ phần này cung cấp thêm 50% câu trả lời.

How to configure SQL server to listen on different ports on different IP addresses?. Điều này cho phép thiết lập các cổng tĩnh cho các cá thể có tên (ví dụ SQLEXPRESS.) Nó đã cho chúng ta 25% cuối cùng của cách trả lời.

13

Thực tế là bạn đang gặp lỗi từ Nhà cung cấp Ống tên cho chúng tôi biết rằng bạn không sử dụng giao thức TCP/IP khi bạn đang cố thiết lập kết nối. Thử thêm tiền tố "tcp" và chỉ định số cổng:

tcp:name.cloudapp.net,1433 
+0

Xin chào Paul, Hiện vẫn còn lỗi nhưng bây giờ là từ Nhà cung cấp TCP không có tên Nhà cung cấp Ống. - Shaun Luttin 7 phút trước –

+0

Xin lỗi, dựa trên việc đọc nhanh câu hỏi của bạn, tôi nghĩ bạn đã định cấu hình máy chủ của mình để nghe trên cổng tĩnh 1433. –

+0

Không phải lo lắng. Cảm ơn Paul. –

1

Tôi cũng đang vật lộn với điều tương tự. Tôi đoán là vấn đề thực tế của bạn đang kết nối với một cá thể SQL Express đang chạy trên một máy tính khác. Các bước để thực hiện việc này có thể được tóm tắt như sau:

  1. Đảm bảo SQL Express được định cấu hình cho Xác thực SQL cũng như Xác thực Windows (mặc định). Bạn thực hiện điều này thông qua các thuộc tính máy chủ SQL Server Management Studio (SSMS)/Security
  2. Trong SSMS, hãy tạo một tên đăng nhập mới có tên "sqlUser", với mật khẩu thích hợp "sql". Đảm bảo đăng nhập mới này được đặt cho Xác thực SQL, không phải Xác thực Windows. SSMS Server Security/Logins/Properties/General. Cũng đảm bảo "Thực thi chính sách mật khẩu" được đánh dấu
  3. Dưới Thuộc tính/Server Roles đảm bảo người dùng mới này có "sysadmin" vai trò
  4. Trong SQL Server Configuration Manager SSCM (tìm kiếm tập tin SQLServerManagerxx.msc trong Windows \ SysWOW64 nếu bạn có thể Không tìm thấy SSCM) trong SQL Server Cấu hình mạng/Giao thức cho SQLExpress đảm bảo TCP/IP được kích hoạt. Bạn có thể tắt các tên được đặt tên nếu bạn muốn
  5. Giao thức nhấp chuột phải TCP/IP và trên tab IPAddresses, đảm bảo mọi địa chỉ IP được đặt thành Đã bật Có và TCP Port 1433 (đây là cổng mặc định cho SQL Server)
  6. Trong Windows Firewall (WF.msc) tạo hai Quy tắc gửi đến mới - một cho SQL Server và một cho Dịch vụ trình duyệt SQL. Đối với SQL Server, bạn cần mở TCP Port 1433 (nếu bạn đang sử dụng cổng mặc định cho SQL Server) và rất quan trọng đối với Dịch vụ trình duyệt SQL, bạn cần mở UDP Port 1434. Đặt tên cho hai quy tắc này một cách thích hợp trong tường lửa của bạn
  7. Dừng và khởi động lại Dịch vụ SQL Server bằng SSCM hoặc Services.msc snap-in
  8. Trong phần Services.msc snap-in đảm bảo rằng Kiểu khởi động dịch vụ trình duyệt SQL là tự động và sau đó bắt đầu dịch vụ này

Tại thời điểm này, bạn sẽ có thể kết nối từ xa, sử dụng Xác thực SQL, người dùng "sqlUser" mật khẩu "sql" với phiên bản SQL Express được định cấu hình như trên. Một mẹo cuối cùng và cách dễ dàng để kiểm tra điều này là tạo một tệp văn bản trống với phần mở rộng .UDL, nói "Test.UDL" trên màn hình của bạn.Nhấp đúp để chỉnh sửa tệp này sẽ gọi hộp thoại Thuộc tính liên kết dữ liệu của Microsoft mà bạn có thể nhanh chóng kiểm tra kết nối SQL từ xa của mình

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