2016-09-19 59 views
0

要求:我們用來從不同架構和服務器(使用鏈接服務器)獲取最少10到50個表名作爲從Prod到測試或開發環境的刷新請求。基礎SQL Server - 從不同服務器和不同架構的表數據刷新

例如:我們有3個模式就是所謂的DBO,Schema1和模式2督促地方在其他環境中,我們有不同的架構名稱,如schemaC和SchmaD等

爲此,我現在用的是下面的腳本以單引號形式獲取表格名稱

步驟1:

聲明@String VARCHAR(8000)= 'schemaname.table1,schemaname.table2,schemname.table1s45k'

集@String = '' '' +替換(@String,」, ' ''', '' ')+ '''」

選擇@String

步驟2:我將備份在我們bkpdata基礎表中現有表中的數據。

第3步:我將截斷backedup表

第4步:我將數據從生產轉移與鏈接服務器前的幫助下開發/測試環境:在開發框

插入到數據庫名稱。 schemaname.tablename select * from linkedservername.schemaname.tablename

如果我們可以通過參數facility獲得動態SQL代碼,如Tablenames,databasename,linkedservername和schema name facility,那將是非常好的選擇。

任何其他選項也非常感謝。

添加額外的細節:

聲明@String VARCHAR(8000)= 'schema1.rnd,schema2.test'

集@String = '' '' +替換(@String, '' '' ' '' ')+ ''''

聲明@Strings表(名稱爲varchar(最大值)) 插入件插入@strings 選擇@String

選擇 '截斷表 '+'' +從sys.tables中的名稱,其中的名稱(從@strings中選擇名稱)

它會將結果顯示爲截斷表格表名。所以我不想執行結果,它必須執行輸出本身。我猜動態SQL會有所幫助。

+0

能否請您在簡短的說明中解釋什麼是確切的要求? – Poonam

+0

肯普隆姆。感謝您的回覆。我們需要將模式1.表1生產數據移動到開發環境中的模式c.table 1。如果表的數量少了,那麼我們可以使用導入導出或插入選擇,但我們必須做幾個表。 – Franklin

回答

1
[email protected] contains location where to(db.schema.tablenm) copy and where from(servevr.dbb.schema.tablenm) 
--At the end of each copy and copy from need to provide , as delimeter 
--copy to and copy from is seprated by | 

Declare @String Varchar(8000) = 
'db.schema.tablenm|servevr.dbb.schema.tablenm, 
db1.schema1.tablenm1|servevr1.db1.schema1.tablenm1, 
db2.schema2.tablenm2|servevr2.db2.schema2.tablenm2, 
' 
Declare @str Varchar(8000) 
Declare @execStr Varchar(8000) 
Declare @delimeterocc int 
Declare @delimeterSer int 
declare @start int 

set @start=0 
Set @delimeterocc=charindex(',',@String) 
While(@delimeterocc>0) 
begin 
    set @str=SUBSTRING(@String,@start,len(@string)-(len(@String)[email protected])[email protected]) 
    Set @delimeterSer=charindex('|',@str) 
    print 'Insert Into ' + SUBSTRING(@str,1,@delimeterSer-1) + ' Select * From '+ SUBSTRING(@str,@delimeterSer+1,len(@str)[email protected]) 
    Set @[email protected]+1 
    Set @delimeterocc=charindex(',',@String,@start) 
end 
相關問題