2010-03-22 28 views
12

Làm cách nào để tạo Chế độ xem trên db Máy chủ được liên kết. Ví dụ: Tôi có một máy chủ được liên kết [1.2.3.4] trên [5.6.7.8]. Cả hai máy chủ db đều là SQL Sserver 2005. Tôi muốn tạo View trên [5.6.7.8] sử dụng bảng trên máy chủ được liên kết.Tạo chế độ xem bằng cách sử dụng db Máy chủ được liên kết trong SQL Server

EDIT:

On tạo sử dụng tên đầy đủ, [1.2.3.4] .db.dbo.table, tôi nhận được lỗi này.

Lỗi thực thi SQL.

câu lệnh SQL đã thi: SELECT * FROM 1.2.3.4.db.dbo.table (bạn có thể nhìn thấy dấu ngoặc là không có.) Lỗi Nguồn: Net SqlClient Data Provider Thông báo lỗi: cú pháp sai gần '0,0'. ---> một phần địa chỉ IP.

Tôi chỉ đang tạo điều này trong ManagementStudio, không sử dụng nó vì nó chưa được tạo. Tôi đã thay đổi IP. Trong hình ảnh, bạn có thể thấy không có dấu ngoặc xung quanh IP nhưng tôi đã cho nó và trên các dấu ngoặc bị loại bỏ.

Cảm ơn.

+0

Vui lòng đăng đầy đủ (hoặc nhiều hơn) tập lệnh tạo chế độ xem, cũng như mã được sử dụng để truy cập chế độ xem. –

+0

555.555.555.555 không phải là địa chỉ IP hợp lệ. Mỗi số có thể tối đa là 255 và nó cần phải là địa chỉ IP hợp lệ. Ví dụ, bạn có thể ping địa chỉ IP: ping 10.1.16.1. Thông thường nó có ý nghĩa hơn để sử dụng tên máy chủ thay vì địa chỉ IP. – Ryan

+1

Cảm ơn bạn đã trả lời. 555.555.555.555 không phải là IP tôi đang sử dụng. Tôi đã thay đổi điều này một cách có chủ ý. – Kashif

Trả lời

16

Bạn cần phải sử dụng tên có trình độ bốn phần: linkedserver.database.schema.table

SELECT * FROM [1.2.3.4].Northwind.dbo.Customers 

Đây là một bài viết MSDN về accessing object names.

Bạn có thể muốn thử tự tạo quan điểm, thay vì sử dụng các công cụ quản lý SQL:

CREATE VIEW [dbo].[sywx] 
AS 
    SELECT * 
    FROM [1.2.3.4].Atia.dbo.IpPbxDCR 
GO 

tôi cũng khuyên bạn nên sử dụng một cái tên, nếu có thể, cho máy chủ liên kết thay vì sử dụng IP địa chỉ nhà.

+0

Cảm ơn bạn đã trả lời. Vui lòng xem Chỉnh sửa của tôi. – Kashif

2

Nếu máy chủ liên kết được thiết lập, bạn chỉ cần tham khảo bảng trên đó sử dụng một tên có trình độ bốn phần:

linkedserver.database.schema.table 

Vì vậy, nếu tên máy chủ liên kết của bạn là [0.0.0.0], bạn có thể tham khảo một bảng như:

[0.0.0.0].database.schema.table 
+0

Cảm ơn bạn đã trả lời. Vui lòng xem Chỉnh sửa của tôi. – Kashif

0

Bạn cũng có thể chỉ cần kéo và thả đối tượng bảng/xem từ máy chủ được liên kết vào chế độ xem của bạn và Management Studio sẽ tạo tham chiếu bốn phần cho bạn.

+0

Kéo và thả từ một máy chủ được liên kết đã xác định vào chế độ xem của tôi trong studio quản lý không hoạt động - giao diện (Management Studio 2008) không cho phép tôi kéo và thả. Có thể có một cài đặt trong máy chủ được liên kết ngăn chặn điều này? –

0

Bạn cần phải xác định Máy chủ được liên kết trước khi bạn có thể truy cập nó, vì mục nhập máy chủ được liên kết cũng chứa chi tiết xác thực.

Sau khi tạo một máy chủ được liên kết, bạn có thể truy cập vào cơ sở dữ liệu của nó và các đối tượng của họ bằng cách sử dụng servername.database ký hiệu dấu chấm. [Chủ] .object

10

Its a Issue SQL Management Studio. Nếu bạn cố gắng tạo chế độ xem bằng cách sử dụng studio quản lý NEW VIEW thì bạn sẽ nhận được lỗi cú pháp không đúng.

Nhưng nếu bạn sử dụng SQL Query:

CREATE VIEW [dbo].[viewname] 
AS 
    SELECT * 
    FROM [0.0.0.0].database.dbo.table 
GO 

sau đó nó sẽ làm việc.

Để kiểm tra bạn sẽ thấy chế độ xem được tạo khi bạn làm mới chế độ xem. Nếu bạn chỉ thực hiện một truy vấn chọn từ chế độ xem, bạn sẽ thấy kết quả trả về xem.

Nhưng nếu bạn cố gắng chuyển sang chế độ thiết kế cho chế độ xem đó và thử thực hiện truy vấn thiết kế, lỗi sẽ xuất hiện trở lại ngay cả khi chế độ xem được tạo thành công.

+0

cảm ơn một triệu cho việc này. Máy chủ được liên kết của tôi có một dấu nối trong tên ném ra Management Studio 2005. Giải pháp của bạn hoạt động xung quanh vấn đề này. –

+0

Đó là vấn đề tôi gặp phải. Tôi đã đưa ra 'đối tượng chưa được giải quyết' cảnh báo quá nhiều tầm quan trọng. Cảm ơn Phil. – Vic

2

vấn đề chính của bạn là đặt tên cho Máy chủ liên kết của bạn bằng số (địa chỉ IP). Cách duy nhất làm việc cho tôi là sử dụng tên bảng chữ cái cho Máy chủ Liên kết của tôi mà không có bất kỳ dấu chấm '.' Bạn có thể sử dụng các dòng mã để thêm máy chủ liên kết của bạn và xác thực:

EXEC sp_addlinkedserver 
     @server='TEST_LINK', 
     @srvproduct='', 
     @provider='SQLNCLI', 
     @datasrc='tcp:0.0.0.0' 

    EXEC sp_addlinkedsrvlogin 
     @useself='FALSE', 
     @rmtsrvname='TEST_LINK', 
     @rmtuser='user', 
     @rmtpassword='secret' 

Bạn có thể tìm thấy những câu trả lời ban here

+0

IP hoạt động tốt miễn là bạn đính kèm địa chỉ trong dấu ngoặc vuông. – influent

+0

Điểm tốt, cảm ơn. –

+0

Đây là giải pháp tuyệt vời để tạo ra máy chủ được liên kết với bí danh khi DNS của bạn không phân giải tên chính xác. – EAmez

1

Đối với các máy chủ liên kết bằng cách sử dụng thời gian cho một tên dịch vụ web - điều này sẽ không công việc.
Chi tiết mã và các bước của sự khác biệt được đăng tại:
http://www.access-programmers.co.uk/forums/showthread.php?t=260764
ví dụ: FROM [V2.EGG.COM]..[NAT_DBA].[NV_WELLS]
Trong SSMS 2008, các dấu ngoặc vuông xung quanh [V2.EGG.COM] .. sẽ bị trình chỉnh sửa xóa. Sau đó cập nhật không thành công vì nó có nhiều hơn 4 phần.
Đã tìm kiếm vô ích để tìm một công việc xung quanh.
Tập lệnh hoạt động được đăng tại liên kết ở trên.

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