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ファイル作っておけば、急な出力要請も怖くない!!