2010-03-05 6 views
1

J'énumère toutes les bases de données d'une instance SQL Server 2005 en utilisant SMO comme indiqué ci-dessous et elle renvoie une base de données inexistante (elle existait dans le passé).L'énumération de la base de données SMO SQL Server retourne la base de données inexistante


Using conn As SqlConnection = New SqlConnection(_connectionString) 
    conn.Open() 
    Dim smoConnection As New ServerConnection(conn) 
    Dim srv As Server = New Server(smoConnection) 
    For Each db As Database In srv.Databases 
     If db.Name.Contains("blablabla") Then 
      doStuffOnDatabase(db) 
     End If 
    Next 
    smoConnection.Disconnect() 
End Using 
 

Sur le même serveur, l'exécution de

exec sp_databases();
renvoie la liste de base de données correcte. Je ne comprends pas pourquoi SMO ne me donne pas la même liste que sp_databases().

Le code ci-dessus fonctionne correctement sur les machines client. Je l'ai seulement vu échouer comme ça sur l'ordinateur portable de deux collègues fonctionnant sous Windows Vista.

Pourquoi SMO renvoie-t-il une ancienne base de données qui n'existe plus?

Les versions de montage sont tous 9.0.242.0

Répondre

0

La suppression du dossier de base de données maître par utilisateur a fait l'affaire. Il a été recréé lors du redémarrage de l'instance utilisateur et la trace de l'ancienne base de données a disparu. On dirait que quelque chose ne va pas là-dedans ...

Le chemin est

C: \ Documents and Settings ** ** USERNAME \ Local Settings \ Application Data \ Microsoft \ Data Microsoft SQL Server ** ** SQL_SERVER_INSTANCE_NAME

en savoir plus sur les instances de l'utilisateur à MSDN

0

Avez-vous tomber la vieille base de données ou tout simplement rebaptisent?

+0

Il est soit tombé, ou le fichier MDF a été supprimé alors que le serveur ne fonctionnait pas. Quoi qu'il en soit, il s'agit d'une instance d'utilisateur et je suspecte que cet utilisateur particulier a sa base de données master privée corrompue. Je vais essayer de supprimer le contenu privé de l'instance utilisateur dans C: \ Documents and Settings \ NOM_UTILISATEUR \ Paramètres locaux \ Données d'application \ Données Microsoft SQL Server Ceci est automatiquement recréé lors du lancement d'une instance d'utilisateur pour la première fois. –

Questions connexes