web-dev-qa-db-fra.com

La taille de la propriété n'est pas disponible pour la base de données

J'ai récemment restauré une base de données dans la même instance à partir de laquelle elle a été sauvegardée (SQL Server 2008 R2 Enterprise) et j'ai constaté que je ne pouvais pas accéder aux propriétés de la base de données.

J'ai fait ce qui suit:

  • Vérifiez que le propriétaire de la base de données a été correctement défini à l'aide de sp_helpdb.
  • Changé le propriétaire de la base de données en sa. Pas une solution.
  • J'ai changé le propriétaire de la base de données en mon utilisateur sysadmin. Pas une solution.
  • Publié DBCC updateusage par rapport à la base de données affectée. Pas une solution.
  • Courir DBCC CheckDB sur une copie restaurée vers une autre instance. Aucune corruption trouvée. La copie restaurée (à partir du même fichier de sauvegarde) n'a généré aucune erreur lors de l'accès à la fenêtre des propriétés de la base de données.

Quelqu'un peut-il aider?

Le message d'erreur que j'obtiens en essayant d'afficher les propriétés est:

Impossible d'afficher la boîte de dialogue demandée. (SqlMgmt)
La taille de la propriété n'est pas disponible pour la base de données '[DBNAME]'.
Cette propriété peut ne pas exister pour cet objet, ou peut ne pas être récupérable en raison de droits d'accès insuffisants. (Microsoft.SqlServer.Smo)

Je suis sysadmin sur cette instance.

Mise à jour: Comme suggéré, j'ai créé un nouvel utilisateur, je l'ai fait administrateur système et j'ai changé le propriétaire de la base de données en lui. Pas une solution malheureusement. Je vais voir si une trace de profileur donne quelque chose d'utile.

Mise à jour: Aaron - la base de données d'origine a été renommée et mise hors ligne, mais se trouve toujours sur cette instance. La sauvegarde de cette base de données a ensuite été restaurée en utilisant le nom d'origine. Les noms de fichier des nouveaux fichiers de base de données sont différents de l'original car ils vivent dans le même dossier que le mdf/ldf d'origine. La base de données restaurée gère actuellement nos applications critiques comme d'habitude.

15
Peter

J'ai résolu ce problème en redémarrant le service SQL Server, malheureusement/heureusement.

Mon idée initiale était de détacher/attacher la base de données. Non pas que je pensais que cela résoudrait réellement le problème, je viens de le lire dans un forum quelque part. Cela n'a eu aucun effet.

Je n'ai malheureusement pas fait ce que PJ Mahoney a suggéré concernant l'exécution d'une trace. J'espère revoir ce problème afin que je puisse savoir si une trace révèle quelque chose. Merci pour la suggestion.

Au moins, répondre à ma propre question signifie que je n'ai pas besoin de voir une autre suggestion pour changer le propriétaire de la base de données; P

Merci

9
Peter

J'ai eu cette même erreur en essayant de modifier les propriétés de croissance de fichier du fichier journal d'une base de données de production. J'ai essayé d'utiliser SSMS et j'ai eu la même erreur:

La taille de la propriété n'est pas disponible pour la base de données XXX.

J'ai plutôt utilisé T-SQL pour modifier le fichier journal de la base de données.

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

Une fois la commande terminée, j'ai pu ouvrir les propriétés de la base de données dans SSMS. J'espère que cela fonctionne pour les autres.

5
Mark S.

Je viens de découvrir cela et d'une trace, apparemment cela a été bloqué par une opération INDEX REBUILD qui était en cours d'exécution

Mon erreur spécifique était

La propriété SpaceAvailable n'est pas disponible pour la base de données '[dbOverwatch]'. Cette propriété peut ne pas exister pour cet objet ou peut ne pas être récupérable en raison de droits d'accès insuffisants. (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

Il doit avoir une valeur de délai d'expiration très faible, mais vous pouvez peut-être vérifier si quelque chose est bloqué lorsque vous essayez d'accéder aux propriétés.

1
Thiago Dantas

Cela peut se produire sur des bases de données très occupées ou même si la base de données n'est pas occupée en général, mais pour le moment, elle exécute une instruction qui modifie rapidement la taille du fichier journal. Par exemple, si vous essayez de supprimer un très grand nombre de lignes (millions) d'une table, le moteur devra se connecter à chaque ligne à des fins de restauration, ce qui forcera le fichier journal à se développer rapidement. Pendant que cela est en cours, si vous essayez d'ouvrir les propriétés de la base de données dans SSMS, vous verrez le message d'erreur "la taille de la propriété n'est pas disponible .."

Une autre façon de le reproduire est la suivante: prenez une très grande base de données (plus de 100 millions de lignes) et exécutez une instruction ALTER TABLE dessus (par exemple, convertissez une colonne char en varchar). Voyez votre fichier journal exploser en centaines de mégaoctets ou même en gigaoctets par seconde. Encore une fois, pendant que cela se produit, votre SSMS ne sera pas en mesure de vous donner la taille de la base de données car elle change trop rapidement pour être précise.

Inutile de dire que s'il vous plaît, n'essayez pas cela sur des serveurs en direct. :)

1
Xotic1

J'obtiens ce message d'erreur pendant déploiement d'une solution d'outils de base de données SQL Server sur la base de données (sur SQL Server 2008 R2). Une fois le déploiement terminé, l'erreur a disparu. C'est un peu méchant car ni la base de données n'est en mode mono-utilisateur ou en lecture seule (ou pas en corse) ou quoi que ce soit d'autre indiquant la raison.

0
Magier