現在オフラインです。再接続するためにインターネットの接続を待っています

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

この記事は、以前は次の 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 サイトを参照してください。
先頭に戻る

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 サイトを参照してください。Microsoft SQL Server 7.0 Books Online (英語版) をダウンロードするには、次のマイクロソフト Web サイトを参照してください。MSDE 2000 の関連情報を参照するには、次の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
319930 Microsoft Desktop Engine に接続する方法
241397 Transact-SQL を使用した MSDE データベースのバックアップ方法
先頭に戻る
プロパティ

文書番号:325003 - 最終更新日: 04/23/2007 03:10:38 - リビジョン: 2.1

Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Desktop Engine (MSDE) SP3a

  • kbdownload kbhowtomaster KB325003
フィードバック