it-swarm.com.de

Die Eigenschaftsgröße ist für die Datenbank nicht verfügbar

Ich habe kürzlich eine Datenbank in derselben Instanz wiederhergestellt, von der sie gesichert wurde (SQL Server 2008 R2 Enterprise), und festgestellt, dass ich nicht auf die Datenbankeigenschaften zugreifen konnte.

Ich habe folgendes getan:

  • Überprüft, ob der Datenbankeigentümer mit sp_helpdb Richtig eingestellt wurde.
  • Der Datenbankeigentümer wurde in sa geändert. Keine Lösung.
  • Der Datenbankeigentümer wurde wieder in meinen sysadmin Benutzer geändert. Keine Lösung.
  • DBCC updateusage Für die betroffene Datenbank ausgegeben. Keine Lösung.
  • Führen Sie DBCC CheckDB Für eine wiederhergestellte Kopie auf einer anderen Instanz aus. Keine Korruption gefunden. Die wiederhergestellte Kopie (aus derselben Sicherungsdatei) hat beim Zugriff auf das Datenbankeigenschaftenfenster keine Fehler ausgelöst.

Kann jemand helfen?

Die Fehlermeldung beim Anzeigen von Eigenschaften lautet:

Der angeforderte Dialog kann nicht angezeigt werden. (SqlMgmt)
Die Eigenschaftsgröße ist für die Datenbank '[DBNAME]' nicht verfügbar.
Diese Eigenschaft ist für dieses Objekt möglicherweise nicht vorhanden oder kann aufgrund unzureichender Zugriffsrechte nicht abgerufen werden. (Microsoft.SqlServer.Smo)

Ich bin ein sysadmin in dieser Instanz.

Update: Wie vorgeschlagen habe ich einen neuen Benutzer erstellt, ihn zum Systemadministrator gemacht und den Datenbankeigentümer in diesen geändert. Leider kein Fix. Ich werde sehen, ob eine Profiler-Ablaufverfolgung etwas Nützliches liefert.

Update: Aaron - Die ursprüngliche Datenbank wurde umbenannt und offline geschaltet, befindet sich jedoch noch in dieser Instanz. Die Sicherung dieser Datenbank wurde dann unter Verwendung des ursprünglichen Namens wiederhergestellt. Die Dateinamen der neuen Datenbankdateien unterscheiden sich vom Original, da sie sich im selben Ordner wie das ursprüngliche mdf/ldf befinden. Die wiederhergestellte Datenbank steuert derzeit unsere kritischen Apps wie gewohnt.

15
Peter

Ich habe dies behoben, indem ich den SQL Server-Dienst leider/zum Glück neu gestartet habe.

Meine ursprüngliche Idee war, die Datenbank zu trennen/anzuhängen. Nicht, dass ich gedacht hätte, dass dies das Problem tatsächlich beheben würde, ich habe das einfach irgendwo in einem Forum gelesen. Dies hatte keine Wirkung.

Ich habe leider nicht getan, was PJ Mahoney vorgeschlagen hat: eine Spur laufen zu lassen. Ich hoffe, ich sehe dieses Problem wieder, damit ich herausfinden kann, ob eine Spur etwas enthüllt. Danke für den Vorschlag.

Wenn ich zumindest meine eigene Frage beantworte, muss ich keinen weiteren Vorschlag zum Ändern des Datenbankeigentümers sehen

Vielen Dank

9
Peter

Ich hatte den gleichen Fehler, als ich versuchte, die Eigenschaften des Dateiwachstums der Protokolldatei einer Produktionsdatenbank zu ändern. Ich habe versucht, SSMS zu verwenden und hatte den gleichen Fehler:

Die Eigenschaftsgröße ist für die XXX-Datenbank nicht verfügbar.

Ich habe stattdessen T-SQL verwendet, um die Datenbankprotokolldatei zu ändern.

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

Nachdem der Befehl ausgeführt wurde, konnte ich die Datenbankeigenschaften in SSMS öffnen. Ich hoffe das funktioniert für andere.

5
Mark S.

Ich bin gerade darauf gestoßen und von einer Spur, anscheinend wurde dies durch eine INDEX REBUILD-Operation blockiert, die ausgeführt wurde

Mein spezifischer Fehler war

Die Eigenschaft SpaceAvailable ist für die Datenbank '[dbOverwatch]' nicht verfügbar. Diese Eigenschaft ist für dieses Objekt möglicherweise nicht vorhanden oder kann aufgrund unzureichender Zugriffsrechte nicht abgerufen werden. (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

Es muss einen sehr niedrigen Timeout-Wert haben, aber vielleicht können Sie überprüfen, ob etwas blockiert wird, wenn Sie versuchen, auf die Eigenschaften zuzugreifen

1
Thiago Dantas

Dies kann bei stark ausgelasteten Datenbanken der Fall sein oder auch dann, wenn die Datenbank im Allgemeinen nicht ausgelastet ist, aber im Moment eine Anweisung ausführt, die die Größe der Protokolldatei schnell ändert. Wenn Sie beispielsweise versuchen, eine sehr große Anzahl von Zeilen (Millionen) aus einer Tabelle zu löschen, muss die Engine jede Zeile für Rollback-Zwecke anmelden, wodurch die Protokolldatei schnell wächst. Wenn Sie währenddessen versuchen, die Datenbankeigenschaften in SSMS zu öffnen, wird die Fehlermeldung "Eigenschaftsgröße ist nicht verfügbar" angezeigt.

Eine andere Möglichkeit, es zu reproduzieren, ist folgende: Nehmen Sie eine sehr große Datenbank (über 100 Millionen Zeilen) und führen Sie eine ALTER TABLE-Anweisung darauf aus (z. B. konvertieren Sie eine char-Spalte in eine varchar). Sehen Sie, wie Ihre Protokolldatei in Hunderten von Megabyte oder sogar Gigabyte pro Sekunde explodiert. Währenddessen kann Ihnen SSMS die Datenbankgröße nicht mitteilen, da sie sich zu schnell ändert, um genau zu sein.

Bitte versuchen Sie dies nicht auf Live-Servern. :) :)

1
Xotic1

Ich erhalte diese Fehlermeldung während Bereitstellung einer SQL Server-Datenbankwerkzeuglösung für die Datenbank (unter SQL Server 2008 R2). Nach Abschluss der Bereitstellung ist der Fehler behoben. Es ist ein wenig böse, weil sich die Datenbank weder im Einzelbenutzermodus noch schreibgeschützt (natürlich nicht) oder irgendetwas anderes befindet, das den Grund angibt.

0
Magier