TL; DR; Phiên bản SQL Server của bạn đang sử dụng các cổng động không hoạt động. Buộc SQL Server sử dụng cổng tĩnh # 1433.
Chi tiết đầy đủ : Trước hết, vấn đề này có nhiều khả năng nếu bạn kết hợp các thể hiện mặc định và chỉ được đặt tên hoặc chỉ các trường hợp được đặt tên (đó là trường hợp của tôi).
Khái niệm chính : Mỗi phiên bản Microsoft SQL Server được cài đặt trên máy tính sử dụng một cổng khác nhau để lắng nghe các yêu cầu kết nối đến. Phiên bản mặc định của SQL Server sử dụng cổng # 1433. Khi bạn cài đặt các phiên bản được đặt tên thì chúng sẽ bắt đầu sử dụng các cổng động được quyết định tại thời điểm khởi động dịch vụ Windows tương ứng với phiên bản SQL Server được đặt tên.
Mã của tôi không thành công (với mã lỗi 40) để kết nối với phiên bản SQL Server được đặt tên duy nhất mà tôi có trên máy ảo của mình. Bạn có thể thử dưới đây các giải pháp có thể:
Giải pháp số 1 : Mã máy khách đang cố gắng kết nối với phiên bản SQL Server cần sự trợ giúp từ dịch vụ trình duyệt SQL Server để tìm ra số cổng mà phiên bản được đặt tên của bạn đang lắng nghe các kết nối đến. Đảm bảo dịch vụ trình duyệt SQL đang chạy trên máy tính của bạn.
Giải pháp # 2 : Kiểm tra cổng # (màu vàng) phiên bản SQL Server có tên của bạn đang sử dụng từ trình quản lý cấu hình SQL Server như trong ảnh chụp nhanh bên dưới:
Sử dụng số cổng đó một cách rõ ràng trong chuỗi kết nối của bạn hoặc sqlcmd
hiển thị bên dưới:
sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt
Giải pháp # 3 : Buộc đối tượng được đặt tên của bạn sử dụng cổng # 1433 được sử dụng theo thể hiện mặc định. Hãy nhớ rằng điều này sẽ chỉ hoạt động nếu bạn không có bất kỳ phiên bản SQL Server mặc định nào trên máy tính của mình vì phiên bản SQL Server mặc định sẽ sử dụng cổng # 1433. Hai số cổng giống nhau không thể được sử dụng bởi hai dịch vụ Windows khác nhau.
Đánh dấu TCP Dynamic ports
trường để trống và TCP Port
trường đến 1433.
Thay đổi số cổng trong chuỗi kết nối của bạn như dưới đây:
sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt
HOẶC LÀ
sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt
Lưu ý : Mọi thay đổi trong cài đặt TCP / IP đều yêu cầu khởi động lại dịch vụ Windows tương ứng.
Thật thú vị sau khi giải quyết lỗi khi tôi quay lại cài đặt cổng động để tạo lại lỗi tương tự thì điều đó đã không xảy ra. Không chắc chắn lý do tại sao.
Vui lòng đọc các chủ đề thú vị dưới đây để biết thêm về các cổng động của SQL Server:
Làm cách nào để định cấu hình Cổng máy chủ SQL trên nhiều trường hợp?
Khi nào thì một Dynamic Dynamic Video Dynamic động?
Khi nào nên sử dụng cổng động TCP và khi nào Cổng TCP?
Tôi đã dẫn đến giải pháp cho vấn đề của tôi từ blog này .