2009-09-16 7 views
1

SQL Server 2005 Management Studio était installé sur mon poste de travail. J'ai depuis installé des outils de poste de travail SQL Server 2008 et supprimé les outils SQL Server 2005. Je suis en train d'écrire un programme C# qui répète mes serveurs enregistrés en studio de gestion. Le problème est, il est itératif à travers ma vieille liste dans les outils 2005 (qui ont maintenant été désinstallés) et pas ma liste de serveurs enregistrés 2008. Je pensais que cela pourrait être un problème de références d'assemblage, donc je vérifie que mes références d'assemblage SMO pointent vers les nouveaux outils. J'utilise:Impossible d'énumérer les serveurs enregistrés SQL Server 2008 avec SMO

  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc
  • Microsoft.SqlServer.Smo
  • Microsoft.sqlserver.sqlenum

I ont vérifié que les assemblages sont les versions 10.0.

Mon C# extrait de code qui fait le travail est:

using System; 
using System.Collections.Generic; 
using System.Text; 
using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 
using Microsoft.SqlServer.Management.Smo.RegisteredServers; 

et

public static void DiscoverServers() 
    { 
     RegisteredServer[] rsvrs = SqlServerRegistrations.EnumRegisteredServers(); 
     foreach (RegisteredServer rs in rsvrs) 
     { 
      Console.WriteLine(rs.Parent.Name + ", " + rs.ServerInstance); 

     } 
    } 

Toutes les idées sur la façon de résoudre ce problème? Est-ce que j'utilise simplement le mauvais code SMO?

Cheers, Marque.

Répondre

0

Votre code est complètement correct. Ma conjecture est, que le problème est avec votre serveur SQL qui ne s'expose pas pour la navigation. Assurez-vous que le service Windows "SQL Server Browser" est en cours d'exécution et que la navigation du serveur est activée sur la configuration du serveur SQL.

+0

Le code fonctionne correctement, mais il répertorie les serveurs qui ont été enregistrés avec le SSMS 2005, mais pas le serveur SSMS 2008. Tous mes serveurs SQL ont la même configuration donc ça ne peut pas être ça - c'est quelque chose à voir avec l'installation ou le code de mon poste de travail, mais je ne sais pas exactement quoi. J'ai vérifié que Hide est éteint et que SQL Browser fonctionne sur des machines où j'ai des instances nommées. D'autres idées? –

+0

Il y a deux choses que vous pouvez vérifier/essayer: 1. Essayez d'utiliser une méthode surchargée de EnumRegisteredServers avec un booléen true: RegisteredServer[] rsvrs = SqlServerRegistrations.EnumRegisteredServers(true); 2. Désactiver le pare-feu, car il bloque de la découverte, même si le serveur SQL est sur la même machine –

+0

Boris il n'y a pas de pare-feu et si je tente de surcharger je reçois une erreur: Aucune surcharge pour la méthode « » EnumRegisteredServers –

Questions connexes