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

14

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érifié que le propriétaire de la base de données a été défini correctement à l'aide de sp_helpdb.
  • Changé le propriétaire de la base de données en sa. Pas une solution.
  • Changé le propriétaire de la base de données à mon sysadminutilisateur. Pas une solution.
  • Émis DBCC updateusagecontre la base de données affectée. Pas une solution.
  • Exécuter DBCC CheckDBsur 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 sysadminsur 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. 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.

Peter
la source
@Shanky J'utilise SSMS 2014 et j'ai tenté cela à partir de plusieurs clients / serveurs.
Peter
Peut-être également exécuter une trace de profileur sur la base de données où cela fonctionne et voir ce qui est différent là aussi avec celui où cela fonctionne et ne fonctionne pas - quelque chose doit être différent?
Pimp Juice IT
J'ai eu très récemment ce problème après avoir restauré une grande base de données. Je suis désolé de dire que ça s'est éclairci. Peut-être une question stupide, mais avez-vous vérifié le journal des erreurs pour quelque chose de fâcheux?
dwjv

Réponses:

8

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 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

Peter
la source
5

J'ai eu cette même erreur lors de la tentative de modification des 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.

Des marques.
la source
intéressant! Commentez ici si cela a fonctionné pour vous
Peter
fonctionne bien et à droite?
Kiquenet
1

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. :)

Xotic1
la source
1

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'attente 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

Thiago Dantas
la source
Intéressant. Je vais tester ça.
Peter
0

Je reçois ce message d'erreur lors du 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 désagréable car la base de données n'est pas en mode mono-utilisateur ou en lecture seule (ou non) ou quoi que ce soit d'autre indiquant la raison.

Magier
la source