FM牛鍵屋本舗

プログラマ(弱)の日々精進系ブログ

SQLServerに存在するオブジェクトのDDLが欲しいよ!!

諸元

と、掲題の通りの要望がありました。   業務処理ではなく、運用管理のためです。  もちろん、SQLServerManagementStdioのGUI操作で簡単に出来るのですが、しばしば行われるとそれすら面倒くさいという例のパターン。(https://technet.microsoft.com/ja-jp/library/ms178078(v=sql.105).aspx) そして、必要であればなるべくならデータも取得したいとのことで。

個人的にはこういうツールに頼るより、データベースマイグレーションツールで世代管理したいんだけどなー。

WindowsPowerShellを使う

https://qiita.com/nakaji/items/91aa1986ba68232e6129

こちらなどでも紹介されているとおり、Windows系のシェルツールっぽいやつで実現できるみたいです。

が、移植性低いし、他の方法ないかなーと。

mssql-scripterを使用する

これはまだ正式リリース前のpublic review版であると思うのですが、使えました。 pythonで作られているため、python環境が必須になります。 また、READMEの通り、pipにてインストールを行うようです。

仕事用の端末はWindowsだったので、実行形式インストーラーで3.6.xのpythonを入手。 そしてmssql-scripterをインストール。

pip install mssql-scripter

ヘルプは以下の通り。

mssql-scripter -h

様々なオプションがあるので、きめ細やかに制御出来ますが基本は以下の通り。

mssql-scripter -S <サーバ名> -U <ユーザ名> -P <パスワード> -f <出力先ディレクトリ> -d <対象データベース>

色々オプションを工夫してbatファイル作っておけば、急な出力要請も怖くない!!