2009-04-06 40 views
28

Giả sử, tôi có một cơ sở dữ liệu có tên là testdb trong kiểm tra máy chủ. Ngoài ra tôi có một cơ sở dữ liệu có tên proddb trong prod máy chủ. Bây giờ tôi muốn chọn dữ liệu của một bảng cơ sở dữ liệu testdb từ cơ sở dữ liệu proddb.Làm thế nào để chọn dữ liệu của một bảng từ cơ sở dữ liệu khác trong SQL Server?

Làm cách nào để thực hiện điều đó trong SQL Server?

Ngoài ra, tôi có thể làm điều đó bằng cách sử dụng liên kết cơ sở dữ liệu trong oracle. Nhưng làm cách nào để thực hiện điều đó trong Máy chủ SQL?

Trả lời

5

Để thực hiện truy vấn máy chủ chéo, hãy kiểm tra quy trình được lưu trữ hệ thống: sp_addlinkedserver trong tệp trợ giúp.

Khi máy chủ được liên kết, bạn có thể chạy truy vấn đối với nó.

+0

Các bảng trong máy chủ khác nhau. – user82431

+0

Đúng, nhìn lên ngay bây giờ. Bạn có thể làm điều đó bằng cách liên kết các máy chủ ... –

+0

Làm cách nào để liên kết giữa các máy chủ và làm cách nào để tôi có thể chọn dữ liệu? vui lòng cung cấp các bước. cảm ơn – user82431

44

Bạn cần sp_addlinkedserver()

http://msdn.microsoft.com/en-us/library/ms190479.aspx

Ví dụ:

exec sp_addlinkedserver @server = 'test' 

sau đó

select * from [server].[database].[schema].[table] 

Trong ví dụ của bạn:

select * from [test].[testdb].[dbo].[table] 
+2

Nếu bạn cần phải vượt qua các thông tin khác nhau, hãy sử dụng EXEC sp_addlinkedsrvlogin 'servername', 'false', NULL, 'SqlUser', 'password' –

+0

Tôi đã gặp khó khăn để làm việc này, tìm thấy bạn cũng có thể làm điều này bằng SSMS (https://www.sqlshack.com/how-to-create-and-configure-a-linked-server-in-sql-server-management-studio/) mà sau đó cho bạn thấy tất cả các tùy chọn bảo mật khác nhau vv có sẵn - tôi thấy tôi đã phải thiết lập thiết lập để sử dụng bối cảnh bảo mật đăng nhập hiện tại để làm cho nó hoạt động. –

11

Tôi đã sử dụng này trước khi để thiết lập một truy vấn đối với một máy chủ và db qua máy chủ liên kết:

EXEC sp_addlinkedserver @server='PWA_ProjectServer', @srvproduct='', 
@provider='SQLOLEDB', @datasrc='SERVERNAME\PWA_ProjectServer' 

mỗi bình luận trên:

select * from [server].[database].[schema].[table] 

ví dụ

select top 6 * from [PWA_ProjectServer].[PWA_ProjectServer_Reporting].[dbo].[MSP_AdminStatus] 
5

Trong SQL Server 2012 trở lên, bạn không cần tạo liên kết. Bạn có thể thực hiện trực tiếp

SELECT * FROM [TARGET_DATABASE].dbo.[TABLE] AS _TARGET 

Tôi không biết liệu phiên bản trước của SQL Server công việc cũng

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