2016-06-13 28 views
2

參數化數據庫我需要定義在這樣的查詢數據庫作爲變量:如何在分佈式查詢

insert into Database1.dbo.Table1 
select * from Database2.dbo.Table1 

在我的情況下,所有的數據庫具有相同的架構。

我可以當然動態SQL做的,但這種方法有一個語法,如:

insert into Database1.dbo.Table1 
select * from @ChosenDatabase.dbo.Table1 

謝謝

+0

動態SQL是唯一的可能性,如果您是直接推你的查詢數據庫。 –

+0

這裏有什麼問題可以在動態sql的幫助下做到這一點.. –

+0

@sandeeprawat我問,因爲我想知道是否有可能沒有動態SQL,因爲腳本需要從管理工作室運行,而從軟件使用動態sql是很好的,從管理工作室它更棘手 – LaBracca

回答

2

你試圖實現的是不可能的;你必須使用動態SQL:

DECLARE @SQLQuery varchar(300) 
DECLARE @TableName varchar(100) 
SET @TableName = ChosenDatabase.dbo.Table1 
SET @SQLQuery = 'INSERT INTO Database1.dbo.Table1 SELECT * FROM ' + @TableName 
EXEC(@SQLQuery); 
2
Declare @dbname varchar(200) 

Declare @sql varchar(1000) 

now comes dynamic sql 

set @sql='select * from '@dbname+'dbo.yourtable'; 
1

儘量使用動態SQL

declare @ChosenDatabase varchar(100)='dbname' 
DECLARE @SQL NVARCHAR(MAX) 
SET @SQL= 'select * from '+ @ChosenDatabase+'.dbo.Customer' 
--SELECT @SQL 
EXEC SP_EXECUTESQL @SQL