[INF] 定期ジョブとして DTS パッケージを実行する方法

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

目次

概要

データ変換サービス (DTS) パッケージで頻繁に起こる問題点は、SQL Server Enterprise Manager (SEM)からは DTS パッケージがエラーなしで実行されるにもかかわらず、ジョブとして定期的に実行するとその DTS パッケージが失敗することです。通常、この問題はパッケージがジョブとして実行される場合と、パッケージが対話的に実行される場合とではセキュリティ コンテキストが異なるために発生します。

この資料では、DTS パッケージの実行に関連するセキュリティの問題点について説明します。

詳細

この資料で使用されている用語には以下のものが含まれます。
元に戻す全体を表示する
DTS データ変換サービス
SQL 認証 Microsoft SQL Server ログインとパスワードに基づくセキュリティ システム。
標準セキュリティ SQL 認証と同じです。
SQL Server 認証 SQL 認証と同じです。
Microsoft Windows NT 認証 ユーザーが Microsoft Windows ユーザー アカウントを使用して接続するとき、SQL Server はユーザーが Microsoft Windows NT、Microsoft Windows 2000、Microsoft Windows 95 または Microsoft Windows 98 を実行しているコンピュータにログオンしたときに評価したアカウント名とパスワードであることを確認します。
統合セキュリティ Microsoft Windows NT 認証と同じです。
Windows NT または Microsoft Windows 2000 認証 Microsoft Windows NT 認証と同じです。
Microsoft Windows NT アカウントまたはログインと等しい Windows ログインまたはアカウント Microsoft Windows NT ログイン アカウントまたは Microsoft Windows 2000 ログイン アカウントと同じです。
SQL エージェント SQL Server エージェント サービス
SEM SQL Server Enterprise Manager

DTS パッケージの実行場所

DTS パッケージに関して頻繁に報告される問題点の 1 つは、パッケージが SEM から実行されるとき、および DTS パッケージがジョブとして定期的に実行されるときに動作が異なることです。SEM の DTS デザイナからパッケージが実行されるときは、パッケージはユーザーがログオンしているコンピュータで実行されます。ユーザーがサーバーで (物理的に、またはリモート アクセス ソフトウェアを使用して) 作業している場合は、パッケージはサーバーで実行されます。ユーザーがワークステーションにログオンし、かつ SEM で SQL Server サーバーを登録していた場合は、パッケージはワークステーションで実行されます。パッケージのセキュリティ コンテキストは、そのコンピュータへのログオンに使用した Windows NT アカウントのセキュリティ コンテキストになります。パッケージが定期ジョブとして実行される場合は、パッケージは常にサーバーで実行されます。

しばしば、開発者が SEM の DTS デザイナで対話的に DTS パッケージを作成し、テストする場合があります。作成された DTS パッケージはデバッグされた後、ジョブとしてスケジュール設定されます。このとき、パッケージの場所は開発者のワークステーションからサーバーに変更されます。パッケージがテキスト データを SQL Server に読み込んでいた場合は、そのテキスト ファイルとファイルへのパスがサーバーに存在しない限り、そのパッケージは失敗します。パッケージが別のサーバーに接続していた場合は、ジョブのセキュリティ コンテキストがその接続をサポートしていない場合、そのパッケージは失敗します。

DTS パッケージの所有者

SQL Server エージェント サービスが管理するジョブを作成することにより、パッケージのスケジュールを設定します。ほかのすべての定期ジョブと同様に、このジョブにも所有者があります。所有者は SQL Server ログインまたは Windows NT アカウントのいずれかです。

所有者を判断するには
  • SEM で対象となるジョブをダブルクリックし、[所有者] ボックスを参照します。

    または

  • msdb.dbo.sp_help_job システム ストアド プロシージャを実行します。
ジョブが実行されるセキュリティ コンテキストは、そのジョブの所有者により決定されます。ジョブが Sysadmin サーバー ロールのメンバではないログインにより所有されている場合は、そのパッケージは SQLAgentCmdExec アカウントのコンテキストで実行され、そのアカウントの権利と権限を持ちます。一般的に、SQLAgentCmdExec アカウントはローカル SQL Server コンピュータの外部の権利は持ちません。そのため、パッケージが Sysadmin ロールのメンバではないログインが所有するジョブとしてスケジュールが設定されている場合は、別のコンピュータに接続する必要があるパッケージは失敗します。

ジョブが Sysadmin ロールのメンバであるアカウント (SQL Server ログインまたは Windows NT 認証ログインのいずれか) に所有されている場合は、SQL エージェント ジョブは SQL エージェント サービスを開始するために使用したアカウントのコンテキストで実行されます。

また、ジョブが Windows NT ドメイン アカウントに所有されている場合、およびパッケージが (ファイルとしてではなく) SQL Server または SQL Server リポジトリに格納されている場合は、同じドメインからのアカウントまたは信頼関係のあるドメインからのアカウントを使用して、SQL Server サービスを開始する必要があります。たとえば、SQL エージェント ジョブが USA ドメインからのアカウントにより所有されている場合、SQL Server サービスを開始するために使用するアカウントアカウントは、USA ドメインからのものか、USA ドメインにより信頼されているドメインからのものである必要があります。SQL Server がローカル アカウントを使用して開始されている場合は、パッケージの実行は失敗します。

所有者を決定するもの

質問 : DTS パッケージを右クリックし、パッケージのスケジュールを設定することを選択したとき、どのうようにして所有者が割り当てられるのでしょうか。
回答 : SQL エージェント ジョブの所有者は、SQL Server がどのように SEM に登録されたかによって異なります。Windows NT 認証を使用して SQL Server が登録された場合は、定期ジョブの所有者は SQL Server エージェント サービスを開始するために使用したアカウントになります。SQL Server 認証 (たとえば sa ログイン) を使用して SQL Server が SEM に登録された場合、ジョブの所有者は SQL Server を登録したのと同じ SQL Server ログインになります。

パッケージの所有権を変更するには
  1. SEM でそのジョブをダブルクリックします。
  2. [全般] タブをクリックし、[所有者] ドロップダウン コンボ ボックスをクリックします。
また、msdb.dbo.sp_update_job システム ストアド プロシージャを使用して、パッケージの所有権を変更できます。

DTS パッケージを起動する方法

DTSRun.exe コマンド ライン ユーティリティを使用して手動でパッケージを実行する場合は、セキュリティ コンテキストはコンピュータにログオンした Windows アカウントのセキュリティ コンテキストになります。xp_cmdshell 拡張ストアド プロシージャを介して DTSrun.exe を使用することによりパッケージを実行する場合、xp_cmdshell を実行したユーザーが Sysadmin ロールのメンバであるときは、パッケージは SQL Server サービスを開始するために使用したアカウントのコンテキストで実行されます。xp_cmdshell を実行したユーザーが Sysadmin ロールのメンバでない場合は、SQLAgentCmdExec アカウントのコンテキストで DTSRun.exe が実行されます。

Local System アカウントを使用して SQL Server が開始された場合は、DTS パッケージは SQL Server を実行しているコンピュータの外部には権限を持ちません。

SQL Server サービスが Windows NT アカウントで開始されたときは、パッケージは Windows NT アカウントと同じ権利と権限を持ちます。その Windows NT アカウントが (ドメイン アカウントとは反対に) ローカル コンピュータ アカウントである場合は、パッケージはそのコンピュータの外部には権限を持ちません。Windows NT アカウントがドメイン アカウントの場合は、パッケージはそのドメイン内の多くのほかのコンピュータのリソースにアクセスできます。

Windows NT 認証接続を行う方法

DTS パッケージが Windows NT 認証を使用しているデータ ソースに接続を行うオブジェクトを含んでいることがあります。この接続に使用するセキュリティ コンテキストは、実行されているパッケージのコンテキストと同じになります。パッケージがコマンド プロンプトから DTSRun.exe を使用して実行されている場合は、現在ログオンしている Windows NT アカウントの資格証明が使用されます。パッケージが SQL Server エージェント ジョブとして実行されている場合は、統合セキュリティ接続が SQL Server エージェントを開始するために使用したアカウントを使って行われます (パッケージの所有者が Sysadmin ロールのメンバであると仮定しています)。

共通の問題点

DTS パッケージを SQL Server エージェントで定期ジョブとして実行するときに発生する可能性のあるその他の共通の問題点を以下に示します。

ネットワーク ドライブの割り当て

パッケージがネットワーク ドライブに割り当てられたドライブ記号によって示される物理位置のファイルに依存している場合、そのパッケージを定期 SQL Server エージェント ジョブとして実行すると、パッケージの所有者とは無関係に失敗します。SQL Server エージェントは Windows NT サービスであり、Windows NT サービスはネットワーク ドライブに割り当てられたドライブ文字は参照できません。ネットワーク ドライブの割り当ては、ユーザーが Windows NT セッションにログオンするときに読み込まれるユーザーのプロファイルの一部です。サービスはユーザー プロファイルでは機能しません。ネットワーク ドライブに割り当てられたドライブ記号の代わりに UNC パスを指定します。

相対パス

相対パス (またはドライブ記号) はパッケージの現在の場所に特有のものです (C:\ など)。パッケージがワークステーションで設計され、その後スケジュールが設定される場合、パッケージを実行する場所が変更されます。ドライブ記号パスは別の物理場所、つまりサーバーを参照することになります。参照しているファイルをサーバーに移動していない限り、パッケージの実行は失敗します。

ActiveX スクリプトでの COM コンポーネント

ActiveX スクリプトで、Microsoft ActiveX Data Objects (ADO)、Remote Data Objects (RDO)、または Decision Support Object (DSO) オブジェクトなどの COM コンポーネントが呼び出される場合、呼び出されるコンポーネントが DTS パッケージが実行されるコンピュータに存在する必要があります。SEM の DTS デザイナまたは DTSRun.exe からパッケージが実行される場合、コンポーネントはユーザーがログオンしているコンピュータに存在する必要があります。パッケージが SQL Server エージェントで実行されるようにスケジュールが設定されている場合は、呼び出されるコンポーネントは SQL Server をホストしているコンピュータに読み込まれる必要があります。

パッケージ セキュリティ

DTS パッケージは所有者パスワードおよびユーザー パスワードを所持します。これらのパスワードはパッケージを編集および実行するユーザーに影響します。これらのパスワードはパッケージが実行されるセキュリティ コンテキストには影響しません。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 269074 (最終更新日 2000-10-21) をもとに作成したものです。

プロパティ

文書番号: 269074 - 最終更新日: 2011年5月10日 - リビジョン: 4.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
キーワード:?
kbsqlmanagementtools kbproductlink kbinfo KB269074
"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