BOGUE : Impossible de se connecter à une instance nommée en clusters via un pare-feu

N° DE BOGUE : 356696 (SHILOH_BUGS)

Symptômes

Si vous essayez de vous connecter une instance nommée en clusters de SQL Server via un pare-feu et que vous utilisez uniquement le nom de l’instance (par exemple, SQL_Virtual_Name\Instance_Name) dans la chaîne de connexion, la connexion échoue et un des messages d’erreur suivants peut s’afficher :

Message d'erreur 1
Serveur SQL spécifié introuvable.
Message d'erreur 2
SQL Server n’existe pas ou accès refusé.
Si vous exécutez une trace réseau sur le serveur, vous pouvez voir que le serveur reçoit effectivement la requête à partir de l’ordinateur client sur le port UDP 1434 pour l’adresse IP du serveur virtuel ; Toutefois, la réponse est envoyée avec l’adresse IP physique du nœud de cluster qui est en cours d’exécution de SQL Server.

Cause

Lorsqu’un ordinateur client se connecte à un ordinateur qui exécute une instance organisée en clusters de SQL Server, si la chaîne de connexion ne spécifie pas la port TCP de destination, la bibliothèque client interroge le serveur sur le port UDP 1434 pour collecter des informations sur l’instance.


Lorsque le serveur renvoie les informations, la trame de réseau contient l’adresse IP du nœud physique au lieu de l’adresse IP du serveur virtuel. En fonction de la configuration du pare-feu, ce paquet de réseau peut être interrompu et le client ne peut pas recevoir une réponse.

Solution de contournement

Pour contourner ce problème, vous pouvez :

  • Spécifiez le numéro de port TCP dans la chaîne de connexion. Par exemple, si votre serveur SQL Server virtuel nommé serveurv1, et il est à l’écoute sur le port TCP/IP 2433, votre chaîne de connexion contient les attributs suivants.
    Data Source=VSERVER1\instancename,2433;Network Library=dbmssocn
    ou

  • Créer un alias de SQL Server sur chaque client à l’aide de l’utilitaire réseau Client. Dans l’alias, spécifier la Net-Library à utiliser (TCP/IP) et le numéro de port. Utiliser cet alias dans votre chaîne de connexion et ne spécifiez pas l’attribut de bibliothèque de réseau dans votre chaîne de connexion.

    Vous pouvez également automatiser la création de l’alias de SQL Server sur chaque client à l’aide d’un objet de stratégie de groupe (GPO) du contrôleur de domaine. Supposons que votre serveur virtuel SQL Server est nommé VSERVER1\MyInstance. Le serveur virtuel SQL Server est à l’écoute sur le port TCP/IP 2433. Le nom de l’alias de SQL Server que vous voulez créer est MyAlias. Pour automatiser la création de l’alias SQL Server, procédez comme suit :
    1. Sur le contrôleur de domaine, créez un fichier .reg qui contient l’entrée de Registre pour l’alias de SQL Server.

      Par exemple, créer un fichier Myreg.reg qui contient les informations suivantes.
      Windows Registry Editor Version 5.00
      [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
      "DSQUERY"="DBNETLIB"
      "MyAlias"="DBMSSOCN,VSERVER1\MyInstance,2433"
    2. Pour créer une unité d’organisation (UO), procédez comme suit :
      1. Ouvrir Active Directory utilisateurs et ordinateurs, droit sur nom_domaine, pointez sur Nouveau, puis cliquez sur Unité d’organisation.
      2. Dans la boîte de dialogue Nouvel objet - unité d’organisation , entrez un nom pour l’unité d’organisation, puis cliquez sur OK.
    3. Ajouter les utilisateurs et les ordinateurs auxquels vous souhaitez appliquer l’objet stratégie de groupe à l’unité d’organisation. Pour ce faire, faites glisser les utilisateurs et les ordinateurs de l’unité d’organisation que vous avez créé à l’étape 2.
    4. Ajouter un objet de stratégie de groupe à l’unité d’organisation. Cet objet de stratégie de groupe s’applique à un script d’ouverture de session utilisateur ou d’un script de démarrage pour importer le fichier .reg. Pour ce faire, procédez comme suit :
      1. Cliquez sur l’unité d’organisation que vous avez créé à l’étape 2, puis cliquez sur Propriétés.
      2. Dans la boîte de dialogue Propriétés , cliquez sur l’onglet Stratégie de groupe .
      3. Sous l’onglet Stratégie de groupe , cliquez sur Nouveau, puis cliquez sur Modifier pour ouvrir la fenêtre Éditeur d’objets de stratégie de groupe .
      4. Si vous souhaitez appliquer cet objet stratégie de groupe aux utilisateurs ou aux groupes, procédez comme suit :
        • Développez Configuration utilisateur, développez Paramètres Windows, cliquez sur Scripts (ouverture/fermeture de session)et ensuite double-cliquez sur ouverture de session.
        Si vous souhaitez appliquer cet objet stratégie de groupe aux ordinateurs, procédez comme suit :
        • Développez Configuration ordinateur, développez Paramètres Windows, cliquez sur Scripts (démarrage/arrêt)et ensuite double-cliquez sur démarrage.
      5. Dans la boîte de dialogue Propriétés , cliquez sur Afficher les fichiers pour ouvrir le dossier qui contient les fichiers de script.

        Remarque Un chemin d’accès UNC Universal Naming Convention () apparaît dans la barre d’adresses de la fenêtre du dossier.
      6. Placez le fichier Myreg.reg dans le dossier que vous avez ouvert à l’étape 4e.
      7. Dans le même dossier, créez un fichier .bat qui contient les informations suivantes. Supposons que le nom de fichier est Mybat.bat.
        Regedit /s <Path>\Myreg.reg
        Remarques
        • < chemin > représente le chemin d’accès UNC du dossier.
        • Le commutateur /s spécifie pour importer le fichier .reg en mode silencieux.
      8. Dans la boîte de dialogue Propriétés , cliquez sur Ajouter.
      9. Dans la boîte de dialogue Ajout d’un Script , cliquez sur Parcourir.
      10. Dans la boîte de dialogue Parcourir , recherchez le fichier Mybat.bat, puis cliquez sur Ouvrir.
      11. Dans la boîte de dialogue Ajout d’un Script , cliquez sur OK.
      12. Dans la boîte de dialogue Propriétés , cliquez sur OK.
    5. Assurez-vous que les utilisateurs et les ordinateurs que vous avez ajouté à l’étape 3 disposent de l’autorisation de lecture et de l’autorisation Appliquer la stratégie de groupe pour l’objet de stratégie de groupe. Pour ce faire, procédez comme suit :
      1. Dans Active Directory utilisateurs et ordinateurs, cliquez sur l’unité d’organisation que vous avez créé à l’étape 2, puis cliquez sur Propriétés.
      2. Dans la boîte de dialogue Propriétés , cliquez sur l’onglet Stratégie de groupe .
      3. Sous l’onglet Stratégie de groupe , cliquez sur l’objet de stratégie de groupe que vous avez créé à l’étape 4c, puis cliquez sur Propriétés.
      4. Dans la boîte de dialogue Propriétés , cliquez sur l’onglet sécurité .
      5. Sous l’onglet sécurité , vérifiez que les utilisateurs et les ordinateurs auxquels s’applique l’objet stratégie de groupe sont répertoriés sous les noms d’utilisateur ou de groupe.
      6. Assurez-vous que l’autorisation de lecture et de l’autorisation Appliquer la stratégie de groupe sont spécifiées pour les utilisateurs et les ordinateurs.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Ce problème est résolu dans les cas suivants :
  • Microsoft SQL Server 2008 est installé sur Windows Server 2008
  • Microsoft SQL Server 2005 qui coexiste avec Microsoft SQL Server 2008 sur Windows Server 2008
Ce problème se produit dans Microsoft SQL Server 2008 sur Windows Server 2003.

Plus d'informations

Pour plus d’informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :

944390 correctif : message d’erreur lorsque vous vous connectez à une instance nommée de SQL Server sur un ordinateur client qui exécute Windows Vista ou Windows Server 2008 : « Spécifié le serveur SQL est introuvable » ou « Erreur localisation de Server/Instance spécifié »

936302 la liste des problèmes connus lorsque vous installez SQL Server 2005 sur Windows Server 2008

Propriétés

ID d'article : 318432 - Dernière mise à jour : 27 janv. 2017 - Révision : 2

Commentaires