コマンドラインでSQL Serverを操作: osql, isql, sqlcmd の詳細解説

2024-04-08

SQL Server コマンドラインツール: osql, isql, sqlcmd の違い

osql、isql、sqlcmd は、Microsoft SQL Server にコマンドラインからアクセスするためのツールです。それぞれ異なる機能と歴史を持ち、用途によって使い分けられます。

各ツールの特徴

osql:

  • 最も古いツール
  • シンプルなコマンドラインインターフェース
  • クエリ実行、結果表示、接続設定など基本的な機能のみ
  • 古いバージョンの SQL Server にのみ対応
  • osql より機能が豊富
  • 変数、ループ、条件分岐などのプログラミング機能
  • スクリプトファイル実行
  • 複数のデータベースサーバーへの接続

sqlcmd:

  • 最新かつ最も機能豊富なツール
  • osql と isql の機能を統合
  • Tab キーによる補完機能
  • 出力形式の制御
  • バッチ処理

比較表

機能osqlisqlsqlcmd
インターフェースシンプル標準拡張
プログラミング機能なしありあり
スクリプト実行なしありあり
接続1 サーバー複数サーバー複数サーバー
バージョン古い古い全て
  • 基本的な操作: osql
  • スクリプト実行: isql または sqlcmd
  • 最新の機能: sqlcmd

補足

  • SQL Server Management Studio (SSMS) は、GUI で SQL Server を管理するツール
  • 各ツールには詳細なオプションがあり、コマンドラインヘルプで確認できる



osql -S localhost -U sa -P MyPassword

SELECT * FROM AdventureWorks2019.Person.Contact

EXIT
isql -S localhost -U sa -P MyPassword

EXEC sp_help 'AdventureWorks2019.Person.Contact'

GO

SELECT * FROM AdventureWorks2019.Person.Contact

GO

EXIT
sqlcmd -S localhost -U sa -P MyPassword

SELECT * FROM AdventureWorks2019.Person.Contact;

SET NOCOUNT ON;

GO

EXEC sp_help 'AdventureWorks2019.Person.Contact';

GO

EXIT
  • 接続設定: -S オプションでサーバー名、-U オプションでユーザー名、-P オプションでパスワードを指定
  • クエリ実行: SELECT ステートメントでクエリを実行
  • スクリプト実行: GO ステートメントでスクリプトを実行
  • 終了: EXIT コマンドでツールを終了



その他のコマンドラインツール

  • bcp: データのインポート/エクスポート
  • sqlps: PowerShell 用の SQL Server モジュール
  • sqlwb: SQL Server Management Studio のコマンドライン版
  • SQL Server Management Studio (SSMS): データベースの管理、クエリ実行、スクリプト実行など
  • Azure Data Studio: クラウドとオンプレミスの SQL Server を管理

sql-server command-line


SQL ServerでXACT_ABORTとRAISERRORの動作を理解する

RAISERROR は、SQL Server でエラーメッセージを表示するために使用されるステートメントです。通常、RAISERROR の後、トランザクションはロールバックされ、実行は停止されます。しかし、XACT_ABORT オプションがオンの場合、RAISERROR の後も実行が継続されることがあります。...


バージョン管理で安心安全!SQL Server ストアドプロシージャの開発・運用を効率化する3つの方法

SQL Server ストアドプロシージャは、データベース内の重要なロジックをカプセル化する便利なツールです。しかし、時間の経過とともに変更や更新が必要になるため、バージョン管理が重要になります。バージョン管理は、以下のメリットをもたらします。...


SQL Server の ntext 列のデータ長

ntext 列のデータ長を確認するには、次の方法があります:LEN() 関数: LEN() 関数は、文字列の長さを返します。ntext 列の場合、LEN() 関数は文字数を返します。sys. columns ビュー: sys. columns ビューは、テーブルの列に関する情報を提供します。ntext 列の場合、sys...


SQL Serverとの比較も!PostgreSQLでFROM句結合サブクエリを使いこなすための詳細ガイド

PostgreSQLとSQL Serverは、どちらも強力な関係データベース管理システム(RDBMS)ですが、構文や機能に若干の違いがあります。今回の記事では、FROM句の結合を使用したサブクエリという観点から、PostgreSQLとSQL Serverの記述方法を比較し、それぞれのポイントを解説します。...