SQL Server Management Studio でInsert文を自動生成する(たぶん何億番煎じかくらいだと思う)

テストコード用のテストデータを手組しているという話題

永続化層込のTestを行っている場合、container上でテストコードを動かす際に、セットアップでテストデータを投入する必要がある

「パワーのあるチームは、適切にマスクを行った検証用Databaseのサンプルが常にcleanな状態に存在していて、そのDBからデータ同期をすれば良いのだろうか??? 」 と想像しつつも、自分のチームはチーム外のコードベースやテストを触ることがままあるため、そこまでの運用ジャンプを相手に強いようとすると、付いてこれなくなる恐れがある。

一方で、

SQL書くの大変だ!」

って話すらあるのも理解できる。

「テスト用の永続化層instanceのcontainerを上げてから、データ入れてって、Management Studioからリバース生成するだけちゃうんちゃうん?」

と聞いたところ、意外とやり方を知らないという空気だったので自分の記憶整理も兼ねて書いてみることにした。(もうちょっと洗練した仕組みに出来たほうがいいんだろうと思いつつ、運用を他チームにお願いする以上、ジャンプの大きさは、頑張れるギリギリを狙うしかない。というのが、近年での学びとしてある。)

SQL Server Management Studio でInsert文を自動生成していく(SSはSSMS v.18で取得しているため、バージョンの新旧によっては、メニューの配置変更があるためあらかじめ留意する事)

スクリプトの生成ウインドウを表示させる

SSMS上でServerへの接続完了後、Insert文を自動生成したいDatabaseを右クリック => タスク => スクリプトの生成 を選択し、スクリプトの生成ウインドウを表示する。 f:id:CreatioVitae:20220124105933p:plain

f:id:CreatioVitae:20220124111802p:plain

Insert文のリバース生成を行う

スクリプトの生成ウインドウで、[ 次へ ] をクリック => オブジェクトの選択画面に切り替わったら [ 特定のデータベース オブジェクトを選択 ] を選択

f:id:CreatioVitae:20220124112500p:plain
特定のデータベース オブジェクトを選択

Insert文をリバース生成したい対象のテーブルを選択し [ 次へ ] をクリック => スクリプト生成オプションの設定画面に切り替わったら [ 詳細設定 ] をクリック => スクリプト作成の詳細オプションを表示する。
[ スクリプト作成の詳細オプション ] の、[ スクリプトを作成するデータの種類 ] を [ データのみ ]に変更して [ OK ] をクリックする。
f:id:CreatioVitae:20220124113423p:plain

ここまで来たら、あとは任意の設定で[ 次へ ]を押して行けば、Insert文のリバース生成が完了する。(どこに吐き出したいかはお好みで。)