2016-09-19 3 views
0

要件:10〜50個のテーブル名(異なるサーバーのスキーマとサーバー(リンクサーバーを使用する)からProd to TestまたはDev環境のリフレッシュ要求を通常。基礎SQL Server - 異なるサーバーと異なるスキーマからのテーブルデータのリフレッシュ

例:私たちは持っている3スキーマのと呼ばれるDBO、他の環境のように、我々はなどschemacのとSchmaDこのため

私は以下のスクリプトを使用していますなど、異なるスキーマ名を持つSCHEMA1とPRODでスキーマ2一重引用符で表名を取得する。

手順1:

は@String VARCHAR(8000)= 'schemaname.table1、schemaname.table2、schemname.table1s45k'

設定@String = '' '' +交換してください(@String、」、 ' ''' を宣言し、 '' ')+ '''」

選択@String

ステップ2:私は、私たちのbkpdataベーステーブル内のバックアップ既存のテーブルのデータをでしょう。

ステップ3:私はリンクサーバーEXの助けを借りて、開発/テスト環境に生産からデータを移動します:私はバックアップされたテーブルに

ステップ4切り捨てられますのdevのボックスに

をデータベース名に挿入します。 schemaname.tablename select * from linkedservername.schemaname.tablename

Tablenames、databasename、linkedservername、およびschema nameファシリティのようなパラメータ機能を使用して動的SQLコードを取得できるといいでしょう。

他のオプションも高く評価されます。

追加詳細:

宣言@String VARCHAR(8000)= 'schema1.rnd、schema2.test'

設定@String = '' '' +交換してください(@String、 '' 、 ' ' '' ')+ ''''

宣言@Stringsテーブル(名VARCHAR(MAX)) @strings 挿入

を@String選択する選択 '切り捨てテーブル '+'' をsys.tablesの名前+名前(名前を@stringsから選択)

結果をTruncate table Tablenameとして表示します。だから私は結果を実行したくないので、出力自体を実行する必要があります。動的SQLが役立つでしょう。

+0

正確な要件は何ですか? – Poonam

+0

Sure Poonam。返信ありがとう。スキーマ1.表1の生産データを開発環境のスキーマc.table 1に移動する必要があります。テーブルの数が少ない場合、インポートのエクスポートを使用するか、selectに挿入することができますが、いくつかのテーブルを作成する必要があります。 – 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 
関連する問題