2010-07-19 32 views
7

Nếu tôi muốn chạy loại truy vấn này trong SQL Server, làm cách nào tôi có thể thực hiện cùng một truy vấn từ một máy chủ mà tôi đã kết nối với một máy chủ khác?Chèn dữ liệu từ máy chủ này sang máy chủ khác?

Tôi đã thử thêm "[ServerName1]". trước "[DatabaseName1]. [dbo] ..." và "[ServerName2]". trước "[DatabaseName2]. [dbo] ..." nhưng điều đó dường như không hoạt động.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
      ([FieldName]) 
    SELECT [FieldName] FROM [DatabaseName2].[dbo].[TableName] 

Điều này có khả thi không?

Trả lời

9

Có bạn sẽ sử dụng máy chủ tên tuổi trước khi toàn bộ phần còn lại của đối tượng tên như:

myserver.mydatabase.dbo.mytable 

Tuy nhiên trước tiên bạn phải thiết lập các máy chủ được liên kết. Tra cứu các máy chủ được liên kết trong BOL.

+0

"BOL" là gì? –

+1

Sách trực tuyến - tệp trợ giúp SQL Server. – HLGEM

8

Nếu bạn có adhoc distributed queries cho phép bạn có thể sử dụng OPENDATASOURCE. Thiết lập máy chủ được liên kết là một tùy chọn khác. Không chắc chắn về những ưu và nhược điểm của từng phương pháp.

INSERT INTO [DatabaseName1].[dbo].[TableName] 
SELECT FieldName 
FROM OPENDATASOURCE('SQLNCLI', 
    'Data Source=Server\InstanceName;Integrated Security=SSPI') 
    .DatabaseName2.dbo.TableName 
+0

FYI tính năng này phải được bật: http://stackoverflow.com/questions/14544221/how-to-enable-ad-hoc-distributed-queries – VoteCoffee

2

Cách tốt nhất để thực hiện việc này là tạo "máy chủ được liên kết" giữa hai máy chủ. Bạn sẽ cần các quyền thích hợp để thực hiện việc này.

Sau đó, đó chỉ là vấn đề truy cập cơ sở dữ liệu sử dụng tên máy chủ được liên kết của bạn.

Ex: [linkedserver] .databasename.dbo.tablename

Để tạo một linkedserver, đi đến máy chủ objects-> nhấp chuột phải vào liên kết servers-> bấm vào 'máy chủ liên kết mới'.

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