SQLCMD

sqlcmd ユーティリティ

msdn-sqlcmd ユーティリティ

SQL Server 2016の教科書 開発編

SQL Server 2016の教科書 開発編

SQLCMDの引数

引数 内容
–U ログイン ID を指定します。
–P ログイン ID のパスワードを指定します。
–S サーバー名または接続文字列を指定します。
–E ログイン ID とパスワードを指定する代わりに Windows 認証接続を行います。-Eを –U や –P と同時に使用するとエラーメッセージが表示されます。
–d SQLCMD 起動後に接続するデータベースを指定します。
–q 指定されたクエリを実行します。実行終了後は SQLCMD のプロンプトが表示されます。
–Q 指定されたクエリを実行します。複数のファイルの指定が可能です。
-t クエリタイムアウトを指定します。
–i Transact-SQL ステートメントが記述されたスクリプトファイルを指定します。複数のファイルの指定が可能です。
–o SQLCMD の出力先のファイルを指定します。指定されない場合は標準出力に出力します。
–v SQLCMD スクリプトで使用される変数を指定します。var = value の形式で指定します。
–A 管理者接続モードで接続します。

主なSQLCMDのコマンド

コマンド 内容
:reset Transact-SQL のキャッシュをクリアします。
:ed 現在または最後に実行されたステートメント キャッシュを編集します。編集するエディタは SQLCMDEDITOR 環境変数で定義します。
:connect SQL Server インスタンスに接続します。
:out クエリの結果をファイルに出力します。 の代わりに stdout, stderr を指定することもできます。
:r ファイルの内容をステートメント キャッシュに追加します。
:!! OS コマンドを実行します。
[:]quit SQLCMD を終了します。
[:]exit SQLCMD を終了します。
[:]exit () 指定された Query を実行して SQLCMD を終了します。
:setvar <変数名> <値> 変数を設定します。設定された変数は ${変数名} で参照することができます。
:serverlist SQL Server の一覧を表示します。
:help すべてのコマンドの説明を表示します。

定義済みスクリプト変数

コマンド 内容
SQLCMDUSER ログイン ID を指定します。(-U)
SQLCMDPASSWORD パスワードを指定します。(-P)
SQLCMDSERVER 接続するサーバー インスタンスを指定します。(-S)
SQLCMDDBNAME 接続するデータベースを指定します。(-d)
SQLCMDLOGINTIMEOUT ログインのタイムアウトを指定します。(-l)
SQLCMDSTATTIMEOUT クエリのタイムアウトを指定します。(-t)
SQLCMDHEADERS クエリ結果のヘッダーを何行ごとに表示させるかを指定します。(-h)
SQLCMDCOLSEP 列の区切り文字を指定します。(-s)
SQLCMDCOLWIDTH 列の表示幅を指定します。(-w)
SQLCMDERRORLEVEL エラー レベルを指定します。(-m)
SQLCMDEDITOR :ed コマンドでキャッシュを編集するエディタを指定します。

SQLCMD の起動・終了、クエリ実行、入出力ファイルの指定

■SQL SERVER認証
SQLCMD -S <server_name> -U <login_id> -P <password>
例)SQLCMD -S localhost\SQLExpress -U sa -P sa

■Windows認証
SQLCMD -S <server_name> -E
例)SQLCMD -S localhost\SQLExpress -E

batファイル

【workstart.bat】

SET SQLCMDSERVER=VAIO-RA50\SQLEXPRESS
SET SQLCMDDBNAME=Test
SQLCMD -U sa -P sa -i work.sql

【work.sql

select * from T_USER
GO
EXIT

SQLCMDデータベース構築

  • データベース作成 (CreateDataBase.sql、"Shift-JIS"で保存)
USE master
GO
CREATE DATABASE SELFDB
ON PRIMARY ( NAME = selfdb_dat,
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\selfdb.mdf',
SIZE = 10MB)
LOG ON ( NAME = selfdb_log,
FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\selfdb.ldf',
SIZE = 10MB)
GO
PRINT 'SELFDB データベースを作成しました。'
  • ログイン作成 (CreateLogin.sql、"Shift-JIS"で保存)
CREATE LOGIN SELFLOGIN
WITH PASSWORD = 'selfstudy',
DEFAULT_DATABASE=SELFDB,
DEFAULT_LANGUAGE=JAPANESE
PRINT 'SELFLOGIN ログインを作成しました。'
  • ユーザー作成 (CreateUser.sql、"Shift-JIS"で保存)
USE SELFDB
GO
CREATE USER SELFUSER
FOR LOGIN SELFLOGIN
WITH DEFAULT_SCHEMA=dbo
GO
sp_addrolemember 'db_owner','SELFUSER'
GO
PRINT 'SELFUSER ユーザーを作成しました。'
  • テーブル作成 (CreateTable.sql、"Shift-JIS"で保存)
USE SELFDB
GO
CREATE TABLE Address(
AddressID int NOT NULL PRIMARY KEY,
AddressLine1 varchar(60),
AddressLine2 varchar(60),
City varchar(30),
PostalCode varchar(15) NOT NULL,
ModifiedDate datetime NOT NULL DEFAULT (getdate())
)
GO
PRINT 'ADDRESS テーブルを作成しました。'