簡體   English   中英

使用T-Sql,如何從遠程服務器上的一個表插入本地服務器上的另一個表?

[英]Using T-Sql, how can I insert from one table on a remote server into another table on my local server?

鑒於遠程服務器'Production'(目前可通過IP訪問)和本地數據庫'Development',如何使用T-SQL從'Production'運行INSERT到'Development'?

我正在使用MS SQL 2005,兩個數據庫之間的表結構有很大不同,因此需要我手動編寫一些遷移腳本。

更新:

T-SQL真的不是我的包。 我嘗試了以下(不知道我在做什么):

EXEC sp_addlinkedserver 
    @server = N'20.0.0.1\SQLEXPRESS', 
    @srvproduct=N'SQL Server' ;

GO

EXEC sp_addlinkedsrvlogin '20.0.0.1\SQLEXPRESS', 'false', 
    'Domain\Administrator', 'sa', 'saPassword'

SELECT * FROM [20.0.0.1\SQLEXPRESS].[DatabaseName].[dbo].[Table]

我收到錯誤:

用戶''登錄失敗。 用戶未與受信任的SQL Server連接關聯。

創建鏈接服務器 ,然后使用4部分表示法

insert table
select <column names>
from LinkedserverName.DatabaseName.SchemaName.TableName

你也可以使用OPENROWSET

insert table
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2008R2.HumanResources.Department
      ORDER BY GroupName, Name') AS a;

試試這個來創建登錄

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'20.0.0.1\SQLEXPRESS',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'sa',
@rmtpassword='saPassword'

您可以將PROD服務器定義為DEV框的鏈接服務器,然后訪問它。 但是我認為從PROD Box獲取備份並將其還原到DEV或使用SSIS進行Schema Import會更容易。

查看RedGate工具,尤其是 SQL數據比較。 如果這不是一個選項,您應該查看OPENDATASOURCEOPENROWSET來訪問遠程數據庫。

那么你可以使用鏈接服務器,然后使用對象的4部分名稱(請參閱BOL了解如何設置鏈接服務器)或者您可以使用SSIS設置數據遷移並連接到遠程服務器或者您可以使用OPENROWSET

我可能會使用SSIS,但我已經熟悉它了。

使用SSMS。 右鍵單擊目標數據庫,然后選擇“任務”,“導入數據”。 您將能夠預覽數據並直觀地進行轉換。 將包保存在SSIS中或立即運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM