2010-12-23 26 views
2

鑑於遠程服務器的「生產」(當前可通過IP訪問)和本地數據庫的「開發」,我如何使用T-SQL將'INSERT'從'生產'運行到'開發'中?使用T-Sql,我如何從遠程服務器上的一個表插入到本地服務器上的另一個表中?

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

UPDATE:

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] 

而我得到的錯誤:

Login failed for user ''. The user is not associated with a trusted SQL Server connection.

+0

請參閱我的答案中的添加內容。'20.0.0.1 \ SQLEXPRESS'服務器是生產包裝盒嗎? – SQLMenace 2010-12-23 19:50:01

+0

@SQLMenace - 是的。 – GenericTypeTea 2010-12-24 11:40:21

回答

7

創建linked 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' 
1

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

0

那麼你可以使用鏈接的服務器,然後使用4個部分名稱爲對象(見BOL如何建立一個鏈接服務器) 或者你可以使用SSIS來設置數據遷移和連接到遠程服務器 或者你可以使用OPENROWSET

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

0

使用SSMS。右鍵單擊目標數據庫並選擇「任務」,「導入數據」。您將能夠預覽數據並進行可視化轉換。將包保存在SSIS中或現在運行。

相關問題