CORRECTIF : Des problèmes se produisent lorsque vous utilisez un serveur lié qui a été créé par le fournisseur SQL Native Client dans SQL Server 2008

S’applique à : SQL Server 2008 DeveloperSQL Server 2008 EnterpriseSQL Server 2008 Standard

Microsoft distribue les correctifs de Microsoft SQL Server 2008 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente 2008 de SQL Server version du correctif.

Symptômes


Sur un ordinateur qui exécute Microsoft SQL Server 2008, vous rencontrez un ou plusieurs des problèmes suivants lorsque vous créez un serveur lié en utilisant le fournisseur SQL Native Client (Sqlncli.dll).

Remarque Ces problèmes se produisent également dans Microsoft SQL Server 2005 Service Pack 3 (SP3). Toutefois, le correctif fourni dans cet article ne s’applique pas à SQL Server 2005 SP3.

Problème 1

Considérez le scénario suivant :
  • Dans SQL Server Management Studio, vous ouvrez la fenêtre Nouveau serveur lié et de créez un serveur lié en utilisant l’un des paramétrages suivants :
    • Fournisseur de SQL Native Client avec le type de serveur que SQL Server
    • Fournisseur de SQL Native Client (SQL pas de natif 10 Client) avec le type de serveur comme autre source de données
    • Fournisseur Microsoft OLE DB pour SQL Server avec le type de serveur comme autre source de données
  • Vous développez le catalogue de Serveurs liés dans SQL Server Management Studio pour afficher les serveurs liés.
Dans ce scénario, le service SQL Server s’arrête de façon inattendue ou un fichier de minividage est généré à plusieurs reprises dans le dossier du journal des erreurs de SQL Server. Ce problème se poursuit jusqu'à ce que le service SQL Server est arrêté. En outre, SQL Server Management Studio signale l’erreur suivante :

TITRE : Microsoft SQL Server Management Studio
------------------------------
Impossible de récupérer les données pour cette demande. (Microsoft.SqlServer.Management.Sdk.Sfc)

Pour de l’aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
INFORMATIONS SUPPLÉMENTAIRES :
Une exception s’est produite lors de l’exécution d’une instruction de Transact-SQL ou un lot. (Microsoft.SqlServer.ConnectionInfo)
------------------------------

Délai d’attente a expiré. Le délai d’attente écoulée avant l’achèvement de l’opération ou le serveur ne répond pas. (Microsoft SQL Server, erreur : -2)



Remarque Ce problème ne se produit pas si vous exécutez une requête de serveur lié lorsque vous utilisez un fournisseur de Client natif de SQL avec le type de serveur que SQL Server.

Problème 2

Considérez le scénario suivant :
  • Vous créez un serveur lié en utilisant le fournisseur Microsoft OLE DB pour pilotes ODBC.
  • La source de données ODBC est créée à l’aide du fournisseur de Client natif de SQL avec le type de serveur comme autre source de données.
Dans ce scénario, le serveur lié ne renvoie aucun résultat.

Résolution


Le correctif de ce problème a été publié dans à jour Cumulative 7 pour SQL Server 2008 Service Pack 1. Pour plus d’informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :-
979065 Package de mise à jour cumulative 7 pour SQL Server 2008 Service Pack 1
Remarque Les versions étant cumulatives, chaque nouvelle version du correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008. Nous vous recommandons l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d’informations, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :-
970365 Le 2008 de SQL Server versions publiées après SQL Server 2008 Service Pack 1
Les correctifs Microsoft SQL Server 2008 sont créés pour les packs de service spécifiques de SQL Server. Vous devez appliquer un correctif SQL Server 2008 Service Pack 1 dans une installation de SQL Server 2008 Service Pack 1. Par défaut, tout correctif qui est fourni dans un service pack de SQL Server est inclus dans le prochain service pack de SQL Server.

Plus d'informations


Vous pouvez vérifier la version des fichiers Sqlncli.dll et Sqlservr.exe par l’exécution de la requête suivante :
select * from sys.dm_os_loaded_modules where name like '%sqlncli.dll' or name like '%sqlservr.exe'
Si vous utilisez Microsoft SQL Server 2008 Service Pack 1 (SP1) ou une version ultérieure de Microsoft SQL Server 2008, la requête retourne les informations de version suivantes :
  • Le fichier Sqlncli.dll aura une version 9.0:3207.0 au plus tard.
  • Le fichier Sqlservr.exe aura une version postérieure ou égale à 10.0:2531.0, mais plus haut 10.0:2766.0.
Si vous utilisez Microsoft SQL Server 2008 RTM ou des versions ultérieures de SQL Server 2008 RTM, la requête retourne les informations de version suivantes :
  • Le fichier Sqlncli.dll aura une version ultérieure à la version 9.0:3207.0.
  • Le fichier Sqlservr.exe aura une version postérieure ou égale à 10.0:1600.0, mais plus haut 10.0:1835.0.

Solution de contournement


Pour contourner ces problèmes, procédez comme suit :

Workaround 1:

1. Supprimez la défaillance du serveur lié.

2. Créez un nouveau serveur lié utilisant le fournisseur SQL Server Native Client 10.0 (SQLNCLI10). Pour ce faire :
a. avec le bouton droit sur Serveurs liés et sélectionnez Nouveau serveur lié.
b. Sélectionnez autre source de données et choisissez SQL Server Native Client 10.0 pour le fournisseur.

Workaround 2:
  1. Créer une sous-clé de Registre nommée « SQLNCLI » dans le chemin suivant :
    HKLM\Software\Microsoft\DataAccess
  2. Créer une entrée de Registre de type REG_DWORD nommée « SQLOSPartitioning » sous cette sous-clé.
  3. La valeur de cette entrée de la valeur 0 x 0.

État


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

Plus d'informations


Logiciel de règlesTitre de la règleDescription de la règleVersions du produit par rapport à laquelle la règle est évaluée.
System Center AdvisorSQL Server manque de mise à jour KB979779 pour empêcher l’altération de la mémoire SQL native clientUn fournisseur SQL Native Client qui correspond à SQL Server 2005 est présent sur ce serveur. Cette version plus ancienne de SQLNCLI.dll pourrait potentiellement chargée dans SQL Server 2008 et SQL Server 2008 R2 lors de l’énumération des fournisseurs et de créer des serveurs liés. Des versions spécifiques de SQL Server 2008 et SQL Server 2008 R2 peuvent rencontrer des problèmes et se bloque lors de la création ou à l’aide d’un serveur lié créé avec ce affectés SQLNCLI.dll. Mettre à jour les instances concernées de SQL Server 2008 et SQL Server 2008 R2 avec les correctifs requis ou évitez d’utiliser cette SQLNCLI.dll lors de la création des serveurs liés.SQL Server 2008

SQL Server 2008 R2


Références


Pour plus d’informations sur le modèle de service incrémentiel pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

935897 un modèle de service incrémentiel est disponible auprès de l’équipe SQL Server pour proposer des correctifs pour les problèmes signalés



Pour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

822499 Nouveau schéma d’affectation de noms pour les packages de mise à jour logicielle de Microsoft SQL Server


Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft