sqlcmd による接続Connecting with sqlcmd

ダウンロードODBC Driver のダウンロードDownloadDownload ODBC Driver

sqlcmd ユーティリティは、Linux および macOS の MicrosoftMicrosoftODBC Driver for SQL ServerSQL Server で使用できます。The sqlcmd utility is available in the MicrosoftMicrosoft ODBC Driver for SQL ServerSQL Server on Linux and macOS.

次のコマンドは、Windows 認証 (Kerberos) を使用する方法を示してと SQL ServerSQL Server認証では、それぞれします。The following commands show how to use Windows Authentication (Kerberos) and SQL ServerSQL Server Authentication, respectively:

sqlcmd -E -Sxxx.xxx.xxx.xxx  
sqlcmd -Sxxx.xxx.xxx.xxx -Uxxx -Pxxx  

利用可能なオプションAvailable Options

現在のリリースでは、次のオプションを使用できます。In the current release, the following options are available:

  • -?-? 表示sqlcmd使用量。Display sqlcmd usage.

  • -a パケット サイズを要求します。-a Request a packet size.

  • -b エラーがある場合にバッチ ジョブを終了します。-b Terminate batch job if there is an error.

  • -c batch_terminatorバッチ ターミネータを指定します。-c batch_terminator Specify the batch terminator.

  • -C サーバー証明書を信頼します。-C Trust server certificate.

  • -d database_name問題、 USE database_nameステートメントを開始するときにsqlcmdします。-d database_name Issue a USEdatabase_name statement when you start sqlcmd.

  • -D sqlcmd -S オプションに渡された値が、データ ソース名 (DSN) として解釈されるようにします。-D Causes the value passed to the sqlcmd -S option to be interpreted as a data source name (DSN). 詳細については、このトピックの最後の「sqlcmd および bcp の DSN サポート」を参照してください。For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -e 入力スクリプトを標準出力デバイス (stdout) に書き込みます。-e Write input scripts to the standard output device (stdout).

  • 信頼関係接続の統合認証を使用します。Linux または macOS のクライアントから統合認証を使用して、信頼関係接続を作成する方法についての詳細については、次を参照してください。 Using Integrated Authenticationします。-E Use trusted connection (integrated authentication.) For more information about making trusted connections that use integrated authentication from a Linux or macOS client, see Using Integrated Authentication.

  • -h number_of_rows 列ヘッダーの間に出力する行数を指定します。-h number_of_rows Specify the number of rows to print between the column headings.

  • -H ワークステーション名を指定します。-H Specify a workstation name.

  • -i input_file[,input_file[,...]] SQL ステートメントまたはストアド プロシージャのバッチを含むファイルを指定します。-i input_file[,input_file[,...]] Identify the file that contains a batch of SQL statements or stored procedures.

  • -I セット、SET QUOTED_IDENTIFIER接続オプションをオンにします。-I Set the SET QUOTED_IDENTIFIER connection option to ON.

  • -k 制御文字を削除するか、置き換えます。-k Remove or replace control characters.

  • -Kアプリケーション_インテント-Kapplication_intent
    アプリケーションがサーバーに接続するときのワークロードのタイプを宣言します。Declares the application workload type when connecting to a server. 現在サポートされている値は、 ReadOnlyだけです。The only currently supported value is ReadOnly. -K を指定しない場合、sqlcmd では AlwaysOn 可用性グループのセカンダリ レプリカへの接続がサポートされません。If -K is not specified, sqlcmd does not support connectivity to a secondary replica in an AlwaysOn availability group. 詳細については、次を参照してください。 ODBC Driver on Linux と macOS の高可用性とディザスター リカバリーします。For more information, see ODBC Driver on Linux and macOS - High Availability and Disaster Recovery.


-K は、CTP for SUSE Linux ではサポートされていません。-K is not supported in the CTP for SUSE Linux. ただし、に渡される DSN ファイルでApplicationIntent=ReadOnlysqlcmd キーワードを指定できます。You can, however, specify the ApplicationIntent=ReadOnly keyword in a DSN file passed to sqlcmd. 詳細については、このトピックの最後の「sqlcmd および bcp の DSN サポート」を参照してください。For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -l timeout サーバーへの接続の試行時に、sqlcmd のログインがタイムアウトするまでの秒数を指定します。-l timeout Specify the number of seconds before a sqlcmd login times out when you try to connect to a server.

  • -m error_level stdout に送信されるエラー メッセージを制御します。-m error_level Control which error messages are sent to stdout.

  • -Mマルチ_フェールオーバー-Mmultisubnet_failover
    SQL Server 2012 (11.x)SQL Server 2012 (11.x) 可用性グループまたは SQL Server 2012 (11.x)SQL Server 2012 (11.x) フェールオーバー クラスター インスタンスの可用性グループ リスナーに接続する際には、必ず -M を指定してください。Always specify -M when connecting to the availability group listener of a SQL Server 2012 (11.x)SQL Server 2012 (11.x) availability group or a SQL Server 2012 (11.x)SQL Server 2012 (11.x) Failover Cluster Instance. -M を指定すると、フェールオーバーを迅速に検出して、(現在) アクティブなサーバーに接続できます。-M provides for faster detection of failovers and connection to the (currently) active server. -M を指定しない場合、-M は無効になります。If -M is not specified, -M is off. 詳細については AlwaysOn 可用性グループAlwaysOn Availability Groupsを参照してくださいODBC Driver on Linux と macOS の高可用性とディザスター リカバリーします。For more information about AlwaysOn 可用性グループAlwaysOn Availability Groups, see ODBC Driver on Linux and macOS - High Availability and Disaster Recovery.


-M は、CTP for SUSE Linux ではサポートされていません。-M is not supported in the CTP for SUSE Linux. ただし、sqlcmd に渡される DSN ファイルで MultiSubnetFailover=Yes キーワードを指定できます。You can, however, specify the MultiSubnetFailover=Yes keyword in a DSN file passed to sqlcmd. 詳細については、このトピックの最後の「sqlcmd および bcp の DSN サポート」を参照してください。For more information, see "DSN Support in sqlcmd and bcp" at the end of this topic.

  • -N 接続を暗号化します。-N Encrypt connection.

  • -o output_file sqlcmd からの出力を受信するファイルを指定します。-o output_file Identify the file that receives output from sqlcmd.

  • -p すべての結果セットのパフォーマンス統計を出力します。-p Print performance statistics for every result set.

  • -P ユーザー パスワードを指定します。-P Specify a user password.

  • -q commandline_queryクエリを実行するときにsqlcmdが開始されるが、クエリの実行が完了したときに終了しません。-q commandline_query Execute a query when sqlcmd starts, but does not exit when the query has finished running.

  • -Q commandline_queryクエリを実行するときにsqlcmdを開始します。-Q commandline_query Execute a query when sqlcmd starts. クエリが終了すると sqlcmd は終了します。sqlcmd will exit when the query finishes.

  • -r エラー メッセージを stderr にリダイレクトします。-r Redirects error messages to stderr.

  • -R ドライバーがクライアントの地域別設定を使用して、通貨および日時データを文字データへ変換します。-R Causes the driver to use client regional settings to convert currency and date and time data to character data. 現時点では、en_US (英語 (米国)) 書式設定のみを使用します。Currently only uses en_US (US English) formatting.

  • -s column_separator_char列の区切り文字を指定します。-s column_separator_char Specify the column-separator character.

  • -S [protocol:] server[,port]-S [protocol:] server[,port]
    インスタンスを指定 SQL ServerSQL Serverに接続するかどうか、-d はまたはを使用する DSN。Specify the instance of SQL ServerSQL Server to connect to, or if -D is used, a DSN. Linux および macOS 上の ODBC ドライバーが必要です-%sThe ODBC driver on Linux and macOS requires -S. なおtcpは唯一の有効なプロトコルです。Note that tcp is the only valid protocol.

  • -t query_timeout コマンド (または SQL ステートメント) がタイムアウトになるまでの時間を秒数で指定します。-t query_timeout Specify the number of seconds before a command (or SQL statement) times out.

  • -u input_file の形式に関係なく、output_file を Unicode 形式で格納するように指定します。-u Specify that output_file is stored in Unicode format, regardless of the format of input_file.

  • -U login_idユーザーのログイン ID を指定します-U login_id Specify a user login ID.

  • -V error_severity_level ERRORLEVEL 変数を設定するために使用される重大度レベルを制御します。-V error_severity_level Control the severity level that is used to set the ERRORLEVEL variable.

  • -w column_width出力用の画面幅を指定します。-w column_width Specify the screen width for output.

  • -W 列から後続の空白を削除します。-W Remove trailing spaces from a column.

  • -x 変数の代入を無効にします。-x Disable variable substitution.

  • -X コマンド、スタートアップ スクリプト、および環境変数を無効にします。-X Disable commands, startup script, and environment variables.

  • -y variable_length_type_display_width設定、sqlcmdスクリプト変数SQLCMDMAXFIXEDTYPEWIDTHします。-y variable_length_type_display_width Set the sqlcmd scripting variable SQLCMDMAXFIXEDTYPEWIDTH.

  • -Y fixed_length_type_display_width設定、sqlcmdスクリプト変数SQLCMDMAXVARTYPEWIDTHします。-Y fixed_length_type_display_width Set the sqlcmd scripting variable SQLCMDMAXVARTYPEWIDTH.

使用可能なコマンドAvailable Commands

現在のリリースでは、次のコマンドを使用できます。In the current release, the following commands are available:

  • [:]!![:]!!

  • :Connect:Connect

  • :Error:Error

  • [:]EXIT[:]EXIT

  • GO [count]GO [count]

  • :Help:Help

  • :List:List

  • :Listvar:Listvar

  • :On Error:On Error

  • :Out:Out

  • :Perftrace:Perftrace

  • [:]QUIT[:]QUIT

  • :r:r


  • :setvar:setvar

利用できないオプションUnavailable Options

現在のリリースでは、次のオプションは使用できません。In the current release, the following options are not available:

  • -A 専用管理者接続 (DAC) を使用して SQL ServerSQL Server にログインします。-A Log in to SQL ServerSQL Server with a Dedicated Administrator Connection (DAC). 専用管理者接続 (DAC) を作成する方法については、「プログラミング ガイドライン」を参照してください。For information on how to make a dedicated administrator connection (DAC), see Programming Guidelines.

  • -f code_page 入力と出力のコード ページを指定します。-f code_page Specify the input and output code pages.

  • -L ローカルに構成されたサーバー コンピューターと、ネットワーク上でブロードキャストしているサーバー コンピューター名の一覧を表示します。-L List the locally configured server computers, and the names of the server computers that are broadcasting on the network.

  • -v sqlcmd スクリプトで使用できる sqlcmd スクリプト変数を作成します。-v Create a sqlcmd scripting variable that can be used in a sqlcmd script.

次の代替方法を使用することができます。 別のファイルに追加することができますし、1 つのファイル内のパラメーターに配置します。You can use the following alternative method: Put the parameters inside one file, which you can then append to another file. これにより、パラメーター ファイルを使用して値を置き換えることができます。This will help you use a parameter file to replace the values. たとえば、次のコンテンツを使用して、a.sql というファイル (パラメーター ファイル) を作成します。For example, create a file called a.sql (the parameter file) with the following content:

:setvar ColumnName object_id  
:setvar TableName sys.objects  

次に、置換のためのパラメーターを使用して、b.sql というファイルを作成します。Then create a file called b.sql, with the parameters for replacement:

select $(ColumnName) from $(TableName)  

、コマンドラインで組み合わせるa.sqlb.sqlc.sql次のコマンドを使用します。At the command line, combine a.sql and b.sql into c.sql using the following commands:

cat a.sql > c.sql 

cat b.sql >> c.sql  

実行sqlcmdしてc.sql入力ファイルとして。Run sqlcmd and use c.sql as input file:

slqcmd -S<...> -P<..> -U<..> -I c.sql  
  • ~ zパスワードパスワードを変更します。-z password Change password.

  • ~ Zパスワードパスワードの変更と終了します。-Z password Change password and exit.

使用できないコマンドUnavailable Commands

現在のリリースでは、次のコマンドは利用できません。In the current release, the following commands are not available:

  • :ED:ED

  • :ServerList:ServerList

  • :XML:XML

sqlcmd および bcp の DSN サポートDSN Support in sqlcmd and bcp

-D を指定した場合は、sqlcmd または bcp -S オプション (または sqlcmd: 接続コマンド) でサーバー名ではなくデータ ソース名 (DSN) を指定できます。You can specify a data source name (DSN) instead of a server name in the sqlcmd or bcp -S option (or sqlcmd :Connect command) if you specify -D. -D によりsqlcmdまたはbcp -s オプションで、DSN に指定されたサーバーに接続します。-D causes sqlcmd or bcp to connect to the server specified in the DSN by the -S option.

システム Dsn に格納されている、 odbc.ini ODBC SysConfigDir ディレクトリ内のファイル (/etc/odbc.ini標準インストールで)。System DSNs are stored in the odbc.ini file in the ODBC SysConfigDir directory (/etc/odbc.ini on standard installations). ユーザー Dsn に格納されている.odbc.iniでユーザーのホーム ディレクトリ (~/.odbc.ini)。User DSNs are stored in .odbc.ini in a user's home directory (~/.odbc.ini).

Linux または macOS 上の DSN では、次のエントリがサポートされています。The following entries are supported in a DSN on Linux or macOS:

  • ApplicationIntent=ReadOnlyApplicationIntent=ReadOnly

  • Database =データベース_名Database=database_name

  • Driver for SQL Server ODBC Driver 11 を = またはDriver for SQL Server ODBC Driver 13 を =Driver=ODBC Driver 11 for SQL Server or Driver=ODBC Driver 13 for SQL Server

  • MultiSubnetFailover=YesMultiSubnetFailover=Yes

  • サーバー =server_名前_または_IP_アドレスServer=server_name_or_IP_address

  • Trusted_Connection=yes|noTrusted_Connection=yes|no

DSN では DRIVER エントリのみが必要ですが、サーバーに接続するには、sqlcmd または bcp が SERVER エントリ内の値を必要とします。In a DSN, only the DRIVER entry is required, but to connect to a server, sqlcmd or bcp needs the value in the SERVER entry.

DSN と sqlcmd または bcp コマンド ラインの両方で同じオプションが指定されている場合は、コマンドライン オプションが、DSN で使用される値をオーバーライドします。If the same option is specified in both the DSN and the sqlcmd or bcp command line, the command line option overrides the value used in the DSN. たとえば、DSN に DATABASE エントリがあり、sqlcmd コマンドラインに -d が含まれる場合、-d に渡される値が使用されます。For example, if the DSN has a DATABASE entry and the sqlcmd command line includes -d, the value passed to -d is used. DSN で Trusted_Connection=yes が指定されている場合は、Kerberos 認証が使用され、ユーザー名 (-U) とパスワード (-P) は無視されます (指定されている場合)。If Trusted_Connection=yes is specified in the DSN, Kerberos authentication is used and user name (-U) and password (-P), if provided, are ignored.

エイリアス alias isql="sqlcmd -D" を定義して、isql を呼び出す既存のスクリプトを、sqlcmd を使用するように変更できます。Existing scripts that invoke isql can be modified to use sqlcmd by defining the following alias: alias isql="sqlcmd -D".

参照See Also

bcp による接続Connecting with bcp