T SQL情報スキーマ?

database information-schema sql sqlbulkcopy tsql

質問

私たちにはたくさんのデータがあり、バックアップの作成にかかる時間を節約するため、指定された会社コード/会社のみを含む現在のデータベースのコピーを作成することが任されています。

TSQLスクリプト、情報スキーマ、バルクコピーを調べるように指示されています。最善のルートがどのようなものになるのだろうと思っています。私は最新のデータベースコピーをローカルに持っています。

スクリプトは

一番上に新しいデータベースの名前と会社コードからの会社コードまたはIDのリストを指定することができます。

新しいデータベースを作成し、関連するデータのみをコピーする

受け入れられた回答

おそらく最善の方法に近いものではありませんが、あなたがそれをやり遂げることができる100の方法のうちの1つです。

declare @databasename nvarchar(100) = 'roflcopter'
, @destination = 'myschema.mytable'
declare @companylist nvarchar(max) = (select stuff( select ',' +convert(nvarchar(5),companyid) from companytable where database = @databasename),1,1,'')

declare @query nvarchar(max) 
= N'use ['+@databasename+']
insert into '+@destination+' /* maybe add dynamic columns here */
select /*same dynamic columns */
from mytable /*or another variable*/
where companyid in('''+@companylist+''')
'
exec (@query)

将来のデータベース名(作成する場合など)と必要なものを宣言するためにあなたの他の変数などを追加してください...動的SQLは遅くて扱いにくく再接続します。 exec()とexecutedqlの違いについてsp_executesqlをチェックしたい場合があります

システムプロシージャーの大部分があります... FK、列名、データ型、pksを見つけるもの...あなたは現在のスキーマを(これらのシステムプロシージャの助けなしに)動的に構築することによって複雑にすることができます。簡単に「スクリプトを生成」して実行することができます。

あなたが考えていた間違った方向にあるかもしれません。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ