# 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 にのみ適用されます。

2022-10-21
  • mssql