# SQLCMD はじめました
MMSQL DB 構築して Laravel 連携する仕事があったので、MSSQL をはじめました。SQL Server でコマンド実行するには「SQLCMD」を使います。SQLCMD コマンドは MYSQL コマンドと類似しているので、オプションが大事です。
sqlcmd ユーティリティ (opens new window)
接続基本コマンド
# SQL ServerにWindows認証接続
sqlcmd -S サーバー名 -E
# SQL ServerにSQL Server認証接続
sqlcmd -S サーバー名 -U ユーザー名
サンプル
# SQLServer バージョン確認
sqlcmd -S localhost -U sa -P password -Q "SELECT @@VERSION";
#
sqlcmd -S %dbServer% -d %dbName% -E -i some_insert.sql
使ったオプションの説明
-S
サーバーネーム-U
ユーザー名-P
ログインパスワード-d
DB 名指定-Q
クエリ SQL 文-E
Windows 認証で接続-i
入力 SQL ファイル
select クエリで取得したデータを指定ファイルに吐き出す場合、-o
オプションを使います。
sqlcmd -Q "SELECT * FROM Linkserver2022.PersonTable.Person" -o result_output.txt
# SQL コマンド一覧
オプション | 説明 |
---|---|
-a | パケット サイズ |
-A | 専用管理者接続 |
-b | エラー時にバッチを中止 |
-c | コマンド終了 |
-C | サーバー証明書を信頼 |
-d | データベース名 |
-E | Windows 認証接続 |
-e | 入力エコー |
-f | codepage i:codepage[, o:codepage] o:codepage[, i:codepage] |
-G | 認証に Azure Active Directory を使用 |
-g | 列暗号化を有効化 |
-h | ヘッダー |
-H | ホスト名 |
-I | 識別子を引用符で区切る |
-i | 入力ファイル |
-j | 未加工エラー メッセージを印刷 |
-K | アプリケーション インテント |
-k[1\|2] | 制御文字の削除[置き換え] |
-l | ログイン タイムアウト |
-L[c] | サーバー一覧[クリーン アウトプット] |
-m | エラー レベル |
-M | マルチサブネット フェールオーバー |
-N | 暗号化接続 |
-o | 出力ファイル |
-P | パスワード |
-p[1] | 統計情報の出力[コロン区切り形式] |
-Q | “コマンドライン クエリ” と終了 |
-q | “コマンドライン クエリ” |
-R | クライアントの地域設定を使用 |
-r[0\|1] | stderr へメッセージを出力 |
-S | サーバー |
-s | 列の区切り文字 |
-t | クエリ タイムアウト |
-u | ユニコード出力 |
-U | ログイン ID |
-v | var = “value”… |
-V | 重大度レベル |
-w | 表示幅 |
-W | 余分なスペースを削除 |
-x | 変数の代入を無効化 |
-X[1] | コマンド、スタートアップ スクリプト、環境変数を無効化 [終了] |
-y | 可変長型の表示幅 |
-Y | 固定長型の表示幅 |
-z | パスワード変更 |
-Z | パスワード変更と終了 |
-? | 構文の要約を表示 |
-d
db_name
sqlcmd の開始時に USE db_name ステートメントを実行します。 このオプションにより、 sqlcmd スクリプト変数 SQLCMDDBNAME が設定されます。 このパラメーターにより初期データベースが指定されます。 既定値は、ログインの既定データベースのプロパティです。 データベースが存在しない場合は、エラー メッセージが生成され、 sqlcmd は終了します。
-D
DNS
-S に指定されたサーバー名を、ホスト名としてではなく、DSN として解釈します。 詳細については、「sqlcmd による接続」の「sqlcmd および bcp の DSN サポート」を参照してください。
-E
ユーザー名とパスワードを使用せずにセキュリティ接続を使用して SQL Server にサインインします。 既定では、 -E
を指定しないと、 sqlcmd ではセキュリティ接続オプションが使用されます。
-E
オプションを使用すると、SQLCMDPASSWORD などのユーザー名とパスワード用に使用できる環境変数の設定が無視されます。 -E オプションが -U オプションまたは -P オプションと共に使用されると、エラー メッセージが生成されます。
-G
オプションは、Azure SQL Database と Azure Synapse Analytics にのみ適用されます。