バグ #: 397455 (SQL$ t)

現象

Microsoft SQL Server 2005 の EXECUTE AS 句を含むステートメントまたはモジュールを実行すると、次のエラーメッセージが表示されることがあります。

プリンシパル "dbo" が存在しないか、この種類のプリンシパルを偽装できないか、または権限がないため、データベースプリンシパルとして実行できません。

この問題は、次のすべての条件が満たされている場合に発生します。

  • SQL Server 2005 のインスタンスからデータベースをバックアップします。 次に、別のコンピューターにインストールされている SQL Server 2005 のインスタンスにデータベースを復元します。

  • ステートメントまたはモジュールは、dbo (データベース所有者) ユーザーとして実行されます。

  • データベースの所有者は、ドメインユーザーまたは SQL Server 認証ログインです。 注意事項

    • ドメインユーザーがデータベースを所有している場合、データベースを復元したコンピューターはドメインにアクセスできません。

    • SQL Server 承認ログインがデータベースを所有している場合、ログインは SQL Server 2005 の新しいインスタンスに存在しません。

原因

この問題は、ステートメントまたはモジュールを実行するためにデータベースユーザーを偽装しようとしたときに、SQL Server 2005 でコンテキストに関する情報を取得できないために発生します。SQL Server では、「Symptoms」セクションに記載されている条件の下で、偽装しようとしているコンテキストに関する情報を取得することはできません。 SQL Server の承認ログインを偽装している場合、SQL Server は、偽装されたユーザーのセキュリティ識別子 (SID) と一致するログインを見つけることができません。 ドメインユーザーを偽装している場合、ドメインコントローラーは、偽装されたユーザーの SID に一致する特定のユーザーに関する情報を見つけることができません。

回避策

この問題を回避するには、データベースの所有者を有効なログインまたはドメインユーザーに変更します。 これを行うには、次のステートメントを実行します。

USE <DatabaseName>GOsp_changedbowner '<NewLogin>'

<DatabaseName>は、データベースの名前を表します。 <newlogin> は、設定するログインの名前を表します。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

スキルを磨く

トレーニングの探索 >

新機能を最初に入手

Microsoft Insider に参加する >

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×