今週は弊課に新人がいらっしゃいました。
その為、システム利用に関するユーザー追加依頼がチラホラとありまして。
中でもちょっと面倒だなと思ったのが、SQLserverのユーザ追加。
管理中のシステムにおいて、DB(全部SQLserver)接続ユーザは個人別になっており、
ユーザの立場によって割り当てる権限(ロール)が決まっています。
私はそれを付与する立場です。
何が出来るか出来ないか、私の指先一つです。ふひひ。
大きく3つ(本番環境、結合環境、単体環境)に区分される環境に、
それぞれ数台ずつのDBサーバ(1サーバ1インスタンス)、
各インスタンスにはいくつかのデータベース。
ユーザの立場によって使うデータベースはバラバラ。
今回は急かされたのもあっていつもどおりにSSMSで接続して作業してたのですが、
コマンドラインでパパパっと出来るんじゃないのかー、と思って調べてみました。
■SQLCMD
そういう訳でSQLCMDです。
sqlcmd ユーティリティを使用すると、Transact-SQL ステートメントやシステム プロシージャ、スクリプト ファイルを使用可能なさまざまなモードで入力できます。
- コマンド プロンプト。
- クエリ エディターでの SQLCMD モード。
- Windows スクリプト ファイル。
- SQL Server エージェント ジョブのオペレーティング システム (Cmd.exe) ジョブ ステップ。
このユーティリティでは、ODBC を使用して、Transact-SQL バッチを実行します。
利用前提環境
Windows インストーラー 4.5 と Microsoft ODBC Driver for SQL Server 17 の両方が必要です。
私のPCにはSQLserverを入れてるのですが、ODBCドライバは入って無い状態でした。
インストールで躓く事は特にないと思います。
■使ってみる
コマンドプロンプトを起動して SQLCMD と叩くだけ。
管理者モードで起動する必要もなく、パスも通してくれてます。
じゃあなんか適当にSQLを実行してみようかと
あれ。
どうやったら実行出来るんだろ?まだDBに繋がっていないとかかな?DB変えてみよ。
あっ
なるほど。goで実行、そういえばそうでしたね。
うんうん。
抜けるときはgo不要です。
さて、別サーバに接続するには…
-H -U -P あたりでしょうか。
来週出社したら試してみたいと思います。
余談ですが、SQLserverでサーバとかインスタンスとか言うとややこしいですね。
発言者のバックボーンによって、何を指してるのかが違ったりして…