2009-03-20 6 views
13

Tôi có rất nhiều dịch vụ truy vấn cơ sở dữ liệu. Tất cả trong số họ làm việc tốt nhưng một dịch vụ gọi một thủ tục lưu trữ mang lại cho tôi lỗi sau:Không thể tìm thấy máy chủ 'dbo' trong sys.servers

Could not find server 'dbo' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

tôi không có ý tưởng tại sao tất cả các thủ tục lưu trữ khác làm việc tốt và điều này không ...

Bằng cách này , Tôi sử dụng SubSonic làm lớp truy cập dữ liệu.

Trả lời

13

Có vẻ như có thêm "." (hoặc hai) trong ánh xạ - tức là nó đang cố tìm server.database.schema.object. Kiểm tra ánh xạ của bạn cho các dấu chấm đi lạc/các mục không xác định.

+0

Nếu bạn có tên bảng chứa dấu chấm, bạn cũng sẽ muốn kiểm tra xem tên có được đặt trong ngoặc không, ví dụ: dbo. [SubSchema.Table] thay vì dbo.SubSchema.Table. – tvanfosson

+0

Thx, dường như một số dấu gạch dưới đã được thay thế bằng dấu chấm ... không có manh mối nào là lý do tại sao điều này xảy ra. Cám ơn. –

+0

Cảm ơn bạn rất nhiều! – Agent007

1

Tôi có một vấn đề với cùng một ngoại lệ vì vậy tôi sẽ đăng ở đây nếu ai đó vấp ngã khi nó:

Hãy cẩn thận nếu bạn chỉ định tên máy chủ trong các từ đồng nghĩa. Tôi đã có một tên máy chủ khác nhau trên máy dàn dựng và sản xuất của tôi và nó gây ra cùng một 'không thể tìm thấy máy chủ'-lỗi.

(Đoán bạn không nên sử dụng từ đồng nghĩa rằng nhiều anyway nhưng nó hữu ích trong một số kịch bản di cư)

15

hãy chạy select name from sys.servers từ máy chủ mà bạn đề cập như máy chủ mặc định trong tập tin cấu hình.

Ở đây trong giá trị tên cột phải khớp với tên máy chủ được sử dụng trong truy vấn báo cáo.

ví dụ serverXXX.databasename.schema.tablename

serverXXX nên có mặt ở đó trong kết quả của select name from sys.servers nếu không nó cho lỗi như nhận được.

+1

Cần lưu ý rằng rõ ràng tên IS phân biệt chữ hoa chữ thường. Tôi đã sử dụng một phiên bản trường hợp thấp hơn của một tên máy chủ và intellisence nhặt tất cả mọi thứ tốt, nhưng khi thời gian đến để thực hiện, tôi đã nhận lỗi của poster ban đầu. Sau đó, tôi sử dụng "chọn * từ sys.servers" và nhận thấy tên máy chủ là tất cả mũ, vì vậy tôi chuyển sang đó, viola! Nó đã làm việc! 1 để đặt tôi trên con đường bên phải. – Lukas