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