不明な 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 つまたは複数が原因である可能性があります。
SQL Server データベース権限が不十分です。
SQL Server データベースがいっぱいです。
MDAC のバージョンが正しくありません。
SQL Server データベースが見つかりません。
SQL Server のバージョンが正しくありません。
SQL Server の照合順序がサポートされていません。
データベースが読み取り専用です。
注意
以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。
解決策: データベース アクセス アカウントに適切な権限を与えます。
この問題を解決するには、データベース アクセス アカウントを割り当て、そのアカウントが SQL Server の適切なアクセス権限を持っていることを確認します。
データベース アクセス アカウントを割り当てるには
SharePoint サーバーの全体管理 Web サイトで、[セキュリティ] をクリックし、[一般的なセキュリティ] セクションの [サービス アカウントの構成] をクリックします。
[サービス アカウントの構成] ページの [資格情報の管理] セクションで、対象の Web アプリケーションに対して適切な Web アプリケーション プールを選択します。
[このコンポーネントのアカウントの選択] セクションで、この Web アプリケーション プールに関連付けるドメイン アカウントを選択します。または、[新しい管理アカウントの登録] をクリックして、新しいドメイン アカウントをこのアプリケーション プールに関連付けます。
[OK] をクリックして、変更を保存します。
アカウントに SQL Server の適切な権限があることを確認するには
管理者権限を持つアカウントを使用して、SQL Server を実行しているコンピューターに接続します。
SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、[セキュリティ] ノード、[ログイン] ノードの順に展開します。データベース アクセス アカウントの名前は、それが SQL ログオン アカウント (たとえば、##MS_PolicyTsqlExecutionLogin##) であることを示しています。
アカウントが存在する場合は、[データベース] ノード、[セキュリティ] ノードの順に展開し、[ロール] をクリックします。
[データベース ロール] ノードを展開し、[db_owner] を右クリックして、[プロパティ] をクリックします。
[データベース ロールのプロパティ] ダイアログ ボックスで、データベース アクセス アカウントが、[このロールのメンバー] の一覧にあるかどうかを確認します。一覧にない場合は、[追加] をクリックします。
注意
以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。
解決策: SQL Server データベースのサイズを大きくします。
SharePoint Foundation は、最大サイズに達したデータベースに書き込むことはできません。解決策の 1 つは、いっぱいになったデータベースの最大サイズの設定を大きくすることです。このデータベースの名前は、イベント メッセージで確認できます。
データベースのサイズを大きくするには
SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、サーバー ノード、[データベース] ノードの順に展開し、目的のデータベースを右クリックして、[プロパティ] をクリックします。データベース名は、イベント メッセージに含まれています。
[プロパティ] ダイアログ ボックスのナビゲーション ウィンドウで、[ファイル] をクリックします。
[データベース ファイル] ダイアログ ボックスの [自動拡張] 列で、データベース ファイルの省略記号をクリックします。
[自動拡張の変更] ダイアログ ボックスの [ファイルの最大サイズ] で、[ファイル拡張の制限 (MB)] オプションが選択されている場合、右側にあるボックスの最大ファイル サイズの値を大きくします。 また、[ファイルを無制限に拡張] オプションを選択して、データベースを無制限に拡張するように構成することもできます。
[OK] をクリックして、変更を保存します。
注意
以下のタスクを実行するには、SharePoint のファームの管理者グループのメンバーである必要があります。
解決策: データベースを復元します。
SQL Server を実行しているコンピューター上に SQL Server データベースが存在しないか、またはデータベースにアクセスできない場合は、データベースをバックアップから復元して、SharePoint Foundation 2010 に再接続します。
データベースをバックアップから復元するには
データベースのバックアップを SQL Server ホストにコピーします。
RESTORE SQL Server コマンドを使用してデータベースを復元します。 RESTORE コマンドの詳細については、https://msdn.microsoft.com/ja-jp/library/ms186858(sql.90).aspx を参照してください。
サーバーの全体管理でデータベースを再接続するには
サーバーの全体管理ページで、[アプリケーション構成の管理] をクリックし、[データベース] セクションの [コンテンツ データベースの管理] をクリックします。
[コンテンツ データベースの管理] ページで、[コンテンツ データベースの追加] をクリックし、[Web アプリケーション] セクションで Web アプリケーションを選択します。
[データベース名と認証] セクションで、[データベース サーバー] ボックスにサーバーの名前を入力し、[データベース名] ボックスにデータベース名を入力します。
[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 照合順序を選択します。
データベースに対する db_owner のアクセス権限を持つアカウントを使用して、SQL Server が実行されているコンピューターに接続します。
SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、[データベース] ノードを展開します。イベント 4972 で示されている特定のデータベースを右クリックして、[プロパティ] をクリックします。
[全般] タブの [メンテナンス] セクションに照合順序が表示されています。
照合順序を変更するには、[オプション] ページを開きます。
[照合順序] ボックスから適切な照合順序を選択します。
解決策: データベースを読み取り/書き込みができるように変更します。
以下の手順を実行してデータベースのサイズを大きくすることで、データベースに対する読み取りと書き込みの両方ができるようにデータベースを変更します。
注意
この操作を実行するには、データベースに対する db_owner のアクセス権限が必要です。
データベースのサイズを大きくするには
SQL Server Management Studio の [オブジェクト エクスプローラー] ナビゲーション ウィンドウで、サーバー ノード、[データベース] ノードの順に展開します。
目的のデータベースを右クリックして、[プロパティ] をクリックします。データベース名は、イベント メッセージに含まれています。
[データベースのプロパティ] ダイアログ ボックスのナビゲーション ウィンドウで、[ファイル] をクリックします。
[データベース ファイル] セクションの [自動拡張] 列で、データベース ファイルの省略記号をクリックします。
[自動拡張の変更] ダイアログ ボックスの [ファイルの最大サイズ] セクションで、[ファイル拡張の制限] オプションが選択されている場合、右側にあるボックスの最大ファイル サイズの値を大きくします。 また、[ファイルを無制限に拡張] オプションを選択して、データベースを無制限に拡張するように構成することもできます。
[OK] をクリックして、変更を保存します。
データベースの問題が解決されたことを確認する
SharePoint 管理シェルで、Windows PowerShell コマンド Get-SPSite | Format-Table -Property ID,WebApplication,ContentDatabase を実行して、各 Web アプリケーションのサイトを一覧表示してそれぞれのデータベース内のサイトをすべて表示し、各データベースで 1 つのサイトを特定します。
サイトを閲覧します。