プロパティサイズはデータベースでは使用できません


14

最近、データベースのバックアップ元と同じインスタンス(SQL Server 2008 R2 Enterprise)にデータベースを復元しましたが、データベースプロパティにアクセスできないことがわかりました。

私は次のことをしました:

  • を使用してデータベース所有者が正しく設定されていることを確認しましたsp_helpdb
  • データベース所有者をに変更しましたsa。修正ではありません。
  • データベースの所有者をsysadminユーザーに戻しました。修正ではありません。
  • DBCC updateusage影響を受けるデータベースに対して発行されました。修正ではありません。
  • DBCC CheckDB復元されたコピーを別のインスタンスに実行します。破損は見つかりませんでした。(同じバックアップファイルから)復元されたコピーは、データベースプロパティウィンドウにアクセスするときにエラーをスローしませんでした。

誰でも助けることができますか?

プロパティを表示しようとすると表示されるエラーメッセージは次のとおりです。

要求されたダイアログを表示できません。(SqlMgmt)
データベース '[DBNAME]'のプロパティサイズは使用できません。
このプロパティはこのオブジェクトには存在しないか、アクセス権が不十分なために取得できない可能性があります。(Microsoft.SqlServer.Smo)

私はsysadminこのインスタンスです。

更新:提案されたように、新しいユーザーを作成し、sysadminにし、データベース所有者をそれに変更しました。残念ながら修正ではありません。プロファイラトレースが有用なものを生成するかどうかを確認します。

更新:アーロン-元のデータベースの名前が変更され、オフラインになりましたが、そのインスタンスに残っています。その後、そのデータベースのバックアップは元の名前を使用して復元されました。新しいデータベースファイルのファイル名は、元のmdf / ldfと同じフォルダーにあるため、元のファイルとは異なります。復元されたデータベースは現在、通常どおり重要なアプリを駆動しています。


@Shanky SSMS 2014を使用しており、複数のクライアント/サーバーからこれを試みました。
ピーター

おそらく、動作するDBに対してプロファイラトレースを実行し、動作するDBと動作しないDBとの違いも確認してください。
ピンプジュースIT

大規模なデータベースを復元した後、最近この問題が発生しました。しかし、それはそれ自体をクリアしたと言って申し訳ありません。馬鹿げた質問かもしれませんが、エラーログで不要なものをチェックしましたか?
dwjv

回答:


8

残念ながら/残念ながら、SQL Serverサービスを再起動することでこれを解決しました。

私の最初のアイデアは、データベースをデタッチ/アタッチすることでした。これが実際に問題を解決すると思ったわけではなく、どこかのフォーラムでそれを読んだだけです。これは効果がありませんでした。

残念ながら、PJ Mahoneyが提案したことはしませんでした:トレースの実行。トレースで何かが明らかになっているかどうかを確認できるように、この問題をもう一度確認してください。提案をありがとう。

少なくとも自分の質問に答えるということは、データベース所有者の変更に関する別の提案を見る必要がないということです。

ありがとう


5

本番データベースのログファイルのファイル拡張プロパティを変更しようとしたときに、同じエラーが発生しました。SSMSを使用してみましたが、同じエラーが発生しました:

プロパティサイズはXXXデータベースでは使用できません。

代わりに、T-SQLを使用してデータベースログファイルを変更しました。

USE [master]
GO
ALTER DATABASE [MyDatabase] MODIFY FILE ( NAME = N'MyDatabase_log', FILEGROWTH = 524288KB )
GO

コマンドが完了した後、SSMSでデータベースプロパティを開くことができました。これが他の人にも役立つことを願っています。


面白い!それがあなたのために働いたなら、ここでコメントしてください
ピーター

正常に動作しますか?
Kiquenet

1

これは、非常にビジーなデータベースで、またはデータベースが一般的にビジーではない場合でも発生する可能性がありますが、現時点では、ログファイルのサイズを急速に変更するステートメントを実行しています。たとえば、テーブルから非常に多くの行(数百万)を削除しようとすると、エンジンはロールバックのためにすべての行をログインする必要があり、ログファイルが急速に大きくなります。これが進行中に、SSMSでデータベースプロパティを開こうとすると、「プロパティサイズが使用できません。」というエラーメッセージが表示されます。

それを再現する別の方法は次のとおりです。非常に大きなデータベース(1億行以上)を取得し、その上でALTER TABLEステートメントを実行します(たとえば、char列をvarcharに変換します)。ログファイルが1秒あたり数メガバイト、またはギガバイト単位で爆発するのを確認してください。繰り返しますが、これが行われている間は、SSMSがデータベースサイズを提供できません。データベースサイズはあまりにも速く変化するため正確ではありません。

言うまでもなく、ライブサーバーでこれを試さないでください。:)


1

これに遭遇したばかりで、トレースから、明らかに、実行中のINDEX REBUILD操作によってブロックされました

私の特定のエラーは

プロパティSpaceAvailableは、データベース '[dbOverwatch]'では使用できません。このプロパティはこのオブジェクトには存在しないか、アクセス権が不十分なために取得できない可能性があります。(Microsoft.SqlServer.Smo)

SELECT
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
(SUM(a.total_pages) + (SELECT ISNULL(SUM(CAST(df.size as bigint)), 0) FROM sys.database_files AS df WHERE df.type = 2 )) AS [SpaceUsed]
FROM
sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id left join sys.internal_tables it on p.object_id = it.object_id

タイムアウト値は非常に低くする必要がありますが、プロパティにアクセスしようとしたときにブロックされているものがあるかどうかを確認できます


面白い。それをテストします。
ピーター

0

データベースに対するSQL Serverデータベースツールソリューションの展開中にこのエラーメッセージが表示されます(SQL Server 2008 R2上)。展開が完了すると、エラーはなくなります。DBはシングルユーザーモードでも読み取り専用(corse not)でも、理由を示すものでもないため、少し厄介です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.