不明な SQL 例外 - イベント 5586

 

適用先: SharePoint Foundation 2010, SharePoint Server 2010

トピックの最終更新日: 2009-11-10

アラート名:   不明な SQL 例外

イベント ID:   5586

概要:   Microsoft SharePoint Foundation は Microsoft SQL Server 2008 データベースを使用して、構成設定と Web サイトの大部分のコンテンツを保存します。たとえば、サイト内のすべてページ、ドキュメント ライブラリ内のファイル、リストに添付されるファイル、およびリスト内の情報はコンテンツ データベースに格納され、セキュリティ設定とアクセス許可設定、およびその他の構成設定は構成データベースに格納されます (ともに SQL Server 2008 のデータベース)。

Microsoft SharePoint Foundation は 1 つのサービス アカウントを使用して、ユーザー要求のためにデータベースと通信します。このサービス アカウントは、特定のユーザー名またはパスワード (ドメイン名とパスワード)、あるいはあらかじめ定義されたシステム アカウント (ローカル システム、ネットワーク サービスなど) のどちらかにできます。SQL Server のデータベースが作成されるときに、データベースの最大サイズの値が設定されます。データベースごとに、別々のデータベース サイズの設定があります。Web アプリケーションは 1 つまたは複数のデータベースに関連付けられていることがあることに注意してください。

現象:   次の現象が発生する可能性があります。

  • 次のイベントがイベント ログに記録されます。イベント ID: 5586 説明: データベース <データベース名> の SQL Server インスタンス <インスタンス名> でデータベースがいっぱいになり、エラーが発生しました。SQL Server のエラー情報は、以下を参照してください。<SQL エラー メッセージ>

    注意

    この説明は SQL エラー コードによって変化します。

原因:   以下のうちの 1 つまたは複数が原因である可能性があります。

  1. SQL Server データベース権限が不十分です。

  2. SQL Server データベースがいっぱいです。

  3. MDAC のバージョンが正しくありません。

  4. SQL Server データベースが見つかりません。

  5. SQL Server のバージョンが正しくありません。

  6. SQL Server の照合順序がサポートされていません。

  7. データベースが読み取り専用です。

注意

以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。

解決策:   データベース アクセス アカウントに適切な権限を与えます。

  • この問題を解決するには、データベース アクセス アカウントを割り当て、そのアカウントが SQL Server の適切なアクセス権限を持っていることを確認します。

    データベース アクセス アカウントを割り当てるには

    1. SharePoint サーバーの全体管理 Web サイトで、[セキュリティ] をクリックし、[一般的なセキュリティ] セクションの [サービス アカウントの構成] をクリックします。

    2. [サービス アカウントの構成] ページの [資格情報の管理] セクションで、対象の Web アプリケーションに対して適切な Web アプリケーション プールを選択します。

    3. [このコンポーネントのアカウントの選択] セクションで、この Web アプリケーション プールに関連付けるドメイン アカウントを選択します。または、[新しい管理アカウントの登録] をクリックして、新しいドメイン アカウントをこのアプリケーション プールに関連付けます。

    4. [OK] をクリックして、変更を保存します。

    アカウントに SQL Server の適切な権限があることを確認するには

    1. 管理者権限を持つアカウントを使用して、SQL Server を実行しているコンピューターに接続します。

    2. SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、[セキュリティ] ノード、[ログイン] ノードの順に展開します。データベース アクセス アカウントの名前は、それが SQL ログオン アカウント (たとえば、##MS_PolicyTsqlExecutionLogin##) であることを示しています。

    3. アカウントが存在する場合は、[データベース] ノード、[セキュリティ] ノードの順に展開し、[ロール] をクリックします。

    4. [データベース ロール] ノードを展開し、[db_owner] を右クリックして、[プロパティ] をクリックします。

    5. [データベース ロールのプロパティ] ダイアログ ボックスで、データベース アクセス アカウントが、[このロールのメンバー] の一覧にあるかどうかを確認します。一覧にない場合は、[追加] をクリックします。

注意

以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。

解決策:   SQL Server データベースのサイズを大きくします。

  • SharePoint Foundation は、最大サイズに達したデータベースに書き込むことはできません。解決策の 1 つは、いっぱいになったデータベースの最大サイズの設定を大きくすることです。このデータベースの名前は、イベント メッセージで確認できます。

    データベースのサイズを大きくするには

    1. SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、サーバー ノード、[データベース] ノードの順に展開し、目的のデータベースを右クリックして、[プロパティ] をクリックします。データベース名は、イベント メッセージに含まれています。

    2. [プロパティ] ダイアログ ボックスのナビゲーション ウィンドウで、[ファイル] をクリックします。

    3. [データベース ファイル] ダイアログ ボックスの [自動拡張] 列で、データベース ファイルの省略記号をクリックします。

    4. [自動拡張の変更] ダイアログ ボックスの [ファイルの最大サイズ] で、[ファイル拡張の制限 (MB)] オプションが選択されている場合、右側にあるボックスの最大ファイル サイズの値を大きくします。 また、[ファイルを無制限に拡張] オプションを選択して、データベースを無制限に拡張するように構成することもできます。

    5. [OK] をクリックして、変更を保存します。

注意

以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。

解決策:   データベースを復元します。

  • SQL Server を実行しているコンピューター上に SQL Server データベースが存在しないか、またはデータベースにアクセスできない場合は、データベースをバックアップから復元して、SharePoint Foundation 2010 に再接続します。

    データベースをバックアップから復元するには

    1. データベースのバックアップを SQL Server ホストにコピーします。

    2. RESTORE SQL Server コマンドを使用してデータベースを復元します。 RESTORE コマンドの詳細については、https://msdn.microsoft.com/ja-jp/library/ms186858(sql.90).aspx を参照してください。

    サーバーの全体管理でデータベースを再接続するには

    1. サーバーの全体管理ページで、[アプリケーション構成の管理] をクリックし、[データベース] セクションの [コンテンツ データベースの管理] をクリックします。

    2. [コンテンツ データベースの管理] ページで、[コンテンツ データベースの追加] をクリックし、[Web アプリケーション] セクションで Web アプリケーションを選択します。

    3. [データベース名と認証] セクションで、[データベース サーバー] ボックスにサーバーの名前を入力し、[データベース名] ボックスにデータベース名を入力します。

    4. [OK] をクリックして、変更を保存します。

解決策:   適切なバージョンの SQL Server をインストールします。

  • データベース サーバー ロールをホストするコンピューターには、Microsoft SQL Server 2005 Service Pack 3 累積的な更新プログラム (CU) 3 または SQL Server 2008 Service Pack 1 CU 2 がインストールされていることが必要です。適切なバージョンの SQL Server をサーバーにインストールするか、または適切なバージョンの SQL Server にサーバーをアップグレードできます。

注意

このタスクを実行するには、データベースに対する db_owner のアクセス権限が必要です。

解決策:   適切な SQL Server 照合順序を選択します。

  1. データベースに対する db_owner のアクセス権限を持つアカウントを使用して、SQL Server が実行されているコンピューターに接続します。

  2. SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、[データベース] ノードを展開します。イベント 4972 で示されている特定のデータベースを右クリックして、[プロパティ] をクリックします。

  3. [全般] タブの [メンテナンス] セクションに照合順序が表示されています。

  4. 照合順序を変更するには、[オプション] ページを開きます。

  5. [照合順序] ボックスから適切な照合順序を選択します。

解決策:   データベースを読み取り/書き込みができるように変更します。

  • 以下の手順を実行してデータベースのサイズを大きくすることで、データベースに対する読み取りと書き込みの両方ができるようにデータベースを変更します。

    注意

    この操作を実行するには、データベースに対する db_owner のアクセス権限が必要です。

    データベースのサイズを大きくするには

    1. SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、サーバー ノード、[データベース] ノードの順に展開します。

    2. 目的のデータベースを右クリックして、[プロパティ] をクリックします。データベース名は、イベント メッセージに含まれています。

    3. [データベースのプロパティ] ダイアログ ボックスのナビゲーション ウィンドウで、[ファイル] をクリックします。

    4. [データベース ファイル] セクションの [自動拡張] 列で、データベース ファイルの省略記号をクリックします。

    5. [自動拡張の変更] ダイアログ ボックスの [ファイルの最大サイズ] セクションで、[ファイル拡張の制限] オプションが選択されている場合、右側にあるボックスの最大ファイル サイズの値を大きくします。 また、[ファイルを無制限に拡張] オプションを選択して、データベースを無制限に拡張するように構成することもできます。

    6. [OK] をクリックして、変更を保存します。

データベースの問題が解決されたことを確認する

  1. SharePoint 管理シェルで、Windows PowerShell コマンド Get-SPSite | Format-Table -Property ID,WebApplication,ContentDatabase を実行して、各 Web アプリケーションのサイトを一覧表示してそれぞれのデータベース内のサイトをすべて表示し、各データベースで 1 つのサイトを特定します。

  2. サイトを閲覧します。