osql ユーティリティを使用して SQL Server Desktop Engine (MSDE 2000) または SQL Server 2005 Express Edition を管理する方法

文書翻訳 文書翻訳
文書番号: 325003 - 対象製品
この記事は、以前は次の ID で公開されていました: JP325003
すべて展開する | すべて折りたたむ

目次

概要

SQL Server 2000 Desktop Engine (MSDE 2000) は、本来バックグラウンドで実行するように設計されているため、固有のユーザー インターフェイスはありません。このため、ユーザーは、MSDE 2000 が埋め込まれているプログラムを使用して MSDE 2000 で対話的な処理を行います。osql ユーティリティは、MSDE 2000 に付属している唯一のツールです。実行可能ファイルである osql.exe は、MSDE 2000 の既定のインスタンスの \Program Files\Microsoft SQL Server\80\Tools\Binn フォルダにあります。この資料では、osql ユーティリティを使用して MSDE 2000 を管理する方法を中心に説明します。

SQL Server 2005 を使用している場合も、osql を使用して SQL Server 2005 Express Edition を管理することができます。ただし、この機能は Microsoft SQL Server 2005 の今後のバージョンでは削除される予定です。新しい開発ではこの機能を使用せず、現在この機能を使用しているアプリケーションについては、変更を検討することをお勧めします。代わりに、Sqlcmd ユーティリティを使用することをお勧めします。Sqlcmd ユーティリティの詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms170207.aspx

osql とは

osql ユーティリティは Microsoft Windows 32 コマンド プロンプト ユーティリティであり、Transact-SQL ステートメントとスクリプト ファイルの実行に使用できます。osql ユーティリティは、ODBC データベース アプリケーション プログラミング インターフェイス (API) を使用してサーバーと通信します。

osql の使用方法

以下に、osql ユーティリティの一般的な使用方法を示します。
  • ユーザーはコマンド プロンプトで作業する場合と同様に、Transact-SQL ステートメントを対話的に入力します。
  • ユーザーは osql ジョブを、次のいずれかの方法で送信します。
    • 実行する Transact-SQL ステートメントを 1 つ指定します。

      または
    • ユーティリティが、実行する Transact-SQL ステートメントを含むスクリプト ファイルを指すようにします。

Transact-SQL ステートメントの対話的入力

osql ユーティリティのオプションの一覧を表示するには、コマンド プロンプトで次のように入力し、Enter キーを押します。オプションは大文字と小文字が区別されます。

osql -?

osql ユーティリティの各オプションの詳細については、SQL Server Books Online の「osql ユーティリティ」を参照してください。

Transact-SQL ステートメントを対話的に入力するには、次の手順を実行します。
  1. MSDE 2000 が実行されていることを確認します。
  2. MSDE 2000 に接続します (詳細については、「SQL Server Desktop Engine (MSDE 2000) への接続」を参照してください)。
  3. osql プロンプトで、Transact-SQL ステートメントを入力し Enter キーを押します。 各入力行の最後で Enter キーを押すと、osql によってその行のステートメントがキャッシュされます。
    • 現在キャッシュされているステートメントを実行するには、Go と入力し Enter キーを押します。
    • Transact-SQL ステートメントのバッチを実行するには、各 Transact-SQL コマンドを 1 行ずつ入力します。最後の行で Go と入力するとバッチの最後を示す合図になり、それまでにキャッシュされているステートメントが実行されます。
    結果がコンソール ウィンドウに表示されます。
  4. osql を終了するには、QUIT または EXIT と入力し Enter キーを押します。

osql ジョブの送信

通常、次の 2 つのうちのいずれかの方法で osql ジョブを送信できます。
  • Transact-SQL ステートメントを 1 つ指定します。

    または
  • ユーティリティがスクリプト ファイルを指すようにします。
各方法の詳細を以下に示します。

Transact-SQL ステートメントを 1 つ指定する方法

MSDE 2000 のローカルの既定のインスタンスに対して Transact-SQL ステートメントを実行するには、次のようなコマンドを入力します。

osql -E -q "Transact-SQL statement"

上記の各部分の意味は、それぞれ次のとおりです。
  • -E を指定すると Microsoft Windows NT 認証を使用します。

    および
  • -q を指定すると Transact-SQL ステートメントを実行しますが、クエリが完了しても osql を終了しません。
Transact-SQL ステートメントを実行し、osql を終了する場合、引数には -q ではなく -Q を使用します。

ユーティリティがスクリプト ファイルを指すようにする方法

ユーティリティがスクリプト ファイルを指すようにするには、次の手順を実行します。
  1. Transact-SQL ステートメントのバッチを含むスクリプト ファイルを作成します (myQueries.sql など)。
  2. コマンド プロンプトを起動し、次のようなコマンドを入力し Enter キーを押します。

    osql -E -i input_file

    上記の各部分の意味は、それぞれ次のとおりです。

    input_file はスクリプト ファイルの完全なパスです。たとえば、スクリプト ファイル myQueries.sql が C:\Queries フォルダにある場合、パラメータ input_file を C:\Queries\myQueries.sql に置き換えます。

    スクリプト ファイルの処理結果はコンソール ウィンドウに表示されます。処理結果をファイルにリダイレクトする場合は、上記のコマンドに引数 -o output_file を追加します。以下に例を示します。

    osql -E -i input_file -o output_file

    上記の各部分の意味は、それぞれ次のとおりです。

    output_file は出力ファイルの完全なパスです。

    出力の番号付けのプロンプト記号を削除するには、上記のコマンドに -n オプションを追加します。以下に例を示します。

    osql -E -i input_file -o output_file -n

SQL Server Desktop Engine (MSDE 2000) への接続

MSDE 2000 に接続するには、次の手順を実行します。
  1. MSDE 2000 が実行されていることを確認します。
  2. 接続先の MSDE 2000 のインスタンスをホストしているコンピュータのコマンド プロンプトを起動します。
  3. 次のコマンドを入力し、Enter キーを押します。

    osql -E

    Windows 認証を使用してローカルの MSDE 2000 の既定のインスタンスに接続されます。

    MSDE 2000 の名前付きインスタンスに接続するには、次のように入力します。

    osql -E -S servername\instancename

    次のエラー メッセージが表示されたら、MSDE 2000 が実行されていないか、またはインストールされている MSDE 2000 の名前付きインスタンスの名前を間違って指定した可能性があります。
    [Shared Memory]SQL Server が存在しないか、アクセスが拒否されました。
    [Shared Memory]ConnectionOpen (Connect()).
    正常にサーバーに接続されると、次のプロンプトが表示されます。

       1>
    						
    このプロンプトは、osql が開始していることを示します。この状態の場合に、Transact-SQL ステートメントを対話的に入力できます。処理結果はコマンド プロンプト ウィンドウに表示されます。

MSDE 2000 の管理

この資料の残りの部分では、MSDE 2000 の管理に最も頻繁に使用される Transact-SQL コマンドを簡潔に紹介します。

新しいログインの作成

ユーザーは、有効なログイン ID を指定して SQL Server に接続する必要があります。sp_grantlogin ストアド プロシージャを使用して、SQL Server ログインとして使用する Microsoft Windows ネットワーク アカウント (グループ アカウントかユーザー アカウントのいずれか一方) を認証し、Windows 認証を使用して SQL Server のインスタンスに接続します。次の例では、Corporate\Test という Windows NT ユーザーに SQL Server インスタンスへの接続を許可します。
EXEC sp_grantlogin 'Corporate\Test'
				
sp_grantlogin ストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールまたは securityadmin 固定サーバー ロールのメンバのみです。ロールの詳細については、SQL Server Books Online の「SQL Server アーキテクチャ」の「ロール」を参照してください。

sp_grantlogin ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_grantlogin」を参照してください。

sp_addlogin ストアド プロシージャを使用して、SQL Server 認証を使用して SQL Server に接続する新しいログイン アカウントを作成します。次の例では、パスワードが "hello" である "test" というユーザーの SQL Server ログインを作成します。
EXEC sp_addlogin 'test','hello'
				
sp_addlogin ストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールおよび securityadmin 固定サーバー ロールのメンバのみです。sp_addlogin ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_addlogin」を参照してください。

データベースへのアクセス

ユーザーは SQL Server のインスタンスに接続した後も、dbo がデータベースへのアクセスを許可するまではデータベースで操作を実行できません。sp_grantdbaccess ストアド プロシージャを使用すると、現在のデータベースに新しいユーザーのセキュリティ アカウントを追加できます。次の例では、Corporate\BobJ という Microsoft Windows NT ユーザーのアカウントを現在のデータベースに追加し、アカウント名を "Bob" にします。
EXEC sp_grantdbaccess 'Corporate\BobJ', 'Bob'
				

sp_adduser ストアド プロシージャは sp_grantdbaccess ストアド プロシージャと同じ機能を実現します。sp_adduser ストアド プロシージャは下位互換性のために含まれているので、sp_grantdbacess ストアド プロシージャを使用することをお勧めします。

sp_grantdbaccess ストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロール、db_accessadmin 固定データベース ロール、および db_owner 固定データベース ロールのメンバのみです。sp_grantdbaccess ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_grantdbaccess」を参照してください。

ログイン パスワードの変更

ログイン パスワードを変更するには、sp_password ストアド プロシージャを使用します。次の例では、ログイン "test" のパスワードを "ok" から "hello" に変更します。
EXEC sp_password 'ok', 'hello','test'
				

実行権限は、デフォルト値であるログイン パスワードを変更しているユーザー本人の public ロールに設定されます。他のユーザーのログイン パスワードを変更できるのは、sysadmin ロールのメンバのみです。sp_password ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_password」を参照してください。

データベースの作成

MSDE 2000 データベースは、データおよびそのデータを使用して実行される操作をサポートするよう定義されているビュー、インデックス、ストアド プロシージャ、トリガなど、その他の要素を含むテーブルの集合体です。MSDE 2000 データベースを作成するには、"CREATE DATABASE" Transact-SQL コマンドを使用します。データベース作成の詳細については、SQL Server Books Online の「データベースの作成」を参照してください

次の例では、Test というデータベースを作成します。コマンドにパラメータを一切追加していないので、Test データベースのサイズは model データベースと同じになります。
CREATE DATABASE Test
				
CREATE DATABASE 権限は、デフォルトで sysadmin 固定サーバー ロールおよび dbcreator 固定サーバー ロールのメンバに設定されます。"CREATE DATABASE" コマンドの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「CREATE DATABASE」を参照してください。

新しいデータベース オブジェクトを作成するには、CREATE Transact-SQL コマンドを使用します。たとえば、新しいテーブルを作成するには、"CREATE TABLE" Transact-SQL コマンドを使用します。詳細については、SQL Server Books Online を参照してください。

データベースのバックアップと復元

SQL Server のバックアップと復元のコンポーネントは、SQL Server データベースに格納される大切なデータを保護する重要な保護手段を提供します。

適切に計画することにより、次のような多くの障害から回復できます。
  • メディアの障害
  • ユーザーによるエラー
  • サーバーの恒久的破損
他にも、データベースのバックアップと復元は、データベースをあるサーバーから別のサーバーにコピーするなど、別の目的にも役立ちます。あるコンピュータのデータベースをバックアップして、別のコンピュータにデータベースを復元すれば、短時間で簡単にデータベースのコピーを作成できます。

データベースのバックアップおよび復元操作の詳細については、SQL Server Books Online の「データベースのバックアップと復元」を参照してください。

次の例では、mydb というデータベース全体のバックアップを実行して、そのバックアップに Mydb.bak という名前を付け、C:\Msde\Backup フォルダに格納します。

BACKUP DATABASE mydb TO DISK = 'C:\MSDE\Backup\mydb.bak'
				

次の例では、mydb というデータベースのログ バックアップを実行して、そのバックアップに Mydb_log.bak という名前を付け、C:\Msde\Backup フォルダに格納します。

BACKUP LOG mydb TO DISK = 'C:\MSDE\Backup\mydb_log.bak'
				

BACKUP DATABASE 権限および BACKUP LOG 権限は、デフォルトで sysadmin 固定サーバー ロール、db_owner 固定データベース ロール、および db_backupoperator 固定データベース ロールのメンバに設定されます。BACKUP ステートメントの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」「BACKUP」を参照してください。

MSDE には、定期ジョブを管理する SQL Server エージェント サービスが含まれています。たとえば、Transact-SQL のバックアップ ジョブを作成し、スケジュールを設定できます。SQL Server エージェント サービスはジョブのスケジュール設定を管理します。MSDE 2000 に含まれているさまざまなストアド プロシージャを使用して、バックアップの実行やバックアップのスケジュール設定を行う方法を説明するサンプル コードについては、次の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
241397 Transact-SQL を使用した MSDE データベースのバックアップ方法
SQL Server エージェント サービスの詳細については、SQL Server Books Online の「SQL Server エージェント サービス」を参照してください。

データベースをバックアップするだけでは、処理は半分しか終了していません。バックアップからデータベースを復元する方法を確認しておくことが重要です。次の例では、バックアップ ファイル C:\Msde\Backup\Mydb.bak から mydb というデータベースを復元します。

RESTORE DATABASE mydb FROM DISK ='C:\MSDE\Backup\mydb.bak'
				
復元するデータベースが存在しない場合、ユーザーには RESTORE ステートメントを実行できる CREATE DATABASE 権限が必要です。データベースが存在する場合 RESTORE 権限はデフォルトで sysadmin 固定サーバー ロールおよび dbcreator 固定サーバー ロールのメンバと、データベースの所有者 (dbo) に設定されます。RESTORE ステートメントの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「RESTORE」を参照してください。

データベースのアタッチとデタッチ

データベースのデータ ファイルとトランザクション ログ ファイルは、デタッチして他のサーバーや元のサーバーに再アタッチできます。データベースをデタッチすると、SQL Server からデータベースが削除されますが、データベースを構成するデータ ファイルやトランザクション ログ ファイルにはデータベースがそのまま残ります。 このデータ ファイルとトランザクション ログ ファイルを使用して、データベースをデタッチしたサーバーを含め、任意の SQL Server のインスタンスにデータベースをアタッチできます。これにより、デタッチした時点とまったく同じ状態のデータベースが利用できます。詳細については、SQL Server Books Online の「データベースをアタッチまたはデタッチする方法」を参照してください。

次の例では、SQL Server の現在のインスタンスから mydb というデータベースをデタッチします。
EXEC sp_detach_db 'mydb'
				
sp_detach_db ストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールのメンバのみです。sp_detach_db ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_detach_db」を参照してください。

次の例では、mydb というデータベースの 2 つのファイルを SQL Server の現在のインスタンスにアタッチします。
EXEC sp_attach_db @dbname = N'mydb', 
   @filename1 = N'C:\MSDE\Backup\mydb.mdf', 
   @filename2 = N'C:\MSDE\Backup\mydb.ldf'
				
大文字 N は Unicode 文字列定数のプレフィックスとして使用します。"N" プレフィックスは SQL-92 標準の National Language を表します。関連情報を参照するには、次の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
239530 SQL Server で Unicode 文字列定数を処理するときは、すべての Unicode 文字列の前に N プレフィックスを付ける必要がある
このプロシージャを実行できるのは、sysadmin 固定サーバー ロールおよび dbcreator 固定サーバー ロールのメンバのみです。sp_attach_db ストアド プロシージャの詳細については、SQL Server Books Online の「Transact-SQL リファレンス」の「sp_attach_db」を参照してください。

osql ユーティリティの使用方法に関する次の情報は、Microsoft SQL Server 2000 のすべてのエディションに該当します。

関連情報

更新された SQL Server 2000 Books Online をダウンロードするには、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/downloads/details.aspx?FamilyID=A6F79CB1-A420-445F-8A4B-BD77A7DA194B&displaylang=ja
Microsoft SQL Server 7.0 Books Online (英語版) をダウンロードするには、次のマイクロソフト Web サイトを参照してください。
http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe
MSDE 2000 の関連情報を参照するには、次の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
319930 Microsoft Desktop Engine に接続する方法
241397 Transact-SQL を使用した MSDE データベースのバックアップ方法

プロパティ

文書番号: 325003 - 最終更新日: 2007年4月23日 - リビジョン: 2.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Desktop Engine (MSDE) SP3a
キーワード:?
kbdownload kbhowtomaster KB325003
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com