Vous pouvez recevoir un message d’erreur lorsque vous essayez d’exécuter des requêtes distribuées à partir d’un client de SQL Server 64 bits à un liées de SQL Server 32 bits

Symptômes

Envisagez le scénario suivant. Vous définissez un serveur lié à une instance de Microsoft SQL Server 2000 32 bits ou une instance de SQL Server 7.0 tels qu’à l’aide de la procédure stockée sp_addlinkedserver ou un outil qui appelle cette procédure. Puis, vous essayez d’exécuter des requêtes distribuées par le biais de ce de SQL Server 64 bits au serveur 32 bits SQL Server 2000 ou SQL Server 7.0 lié. Dans ce scénario, vous pouvez rencontrer l’un des problèmes suivants :
  • Si le serveur SQL Server 2000 32 bits n’a pas été mis à niveau vers SQL Server 2000 Service Pack 3 (SP3) ou SQL Server 2000 Service Pack 4 (SP4), le message d’erreur suivant s’affiche :
    Les procédures stockées de catalogue ODBC installés sur le serveur < LinkedServerName > sont version < OldVersionNumber > ; version < NewVersionNumber > ou version ultérieure est nécessaire pour assurer un fonctionnement correct. Veuillez contacter votre administrateur système.
  • Vous recevez un message d’erreur si les conditions suivantes sont remplies :
    • SQL Server 2000 SP3 ou SQL Server 2000 Service Pack 4 est installé sur le serveur SQL Server 2000 32 bits, ou que vous utilisez le serveur lié SQL Server 7.0.
    • Les versions du système, des procédures stockées sur le serveur SQL Server 2000 32 bits ou sur le serveur SQL Server 7.0 sont différentes de la version de service pack est installée sur le serveur.
    Le message d’erreur est semblable à la suivante :
    La procédure stockée nécessaire pour terminer cette opération est introuvable sur le serveur. Veuillez contacter votre administrateur système.
    Msg 7311, niveau 16, état 2, ligne 1
    Impossible d’obtenir l’ensemble de lignes de schéma « DBSCHEMA_TABLES_INFO » pour le fournisseur OLE DB « SQLNCLI » pour le serveur lié « < LinkedServerName > ». Le fournisseur prend en charge l’interface, mais renvoie un code d’erreur lorsqu’il est utilisé.
Remarque Si vous utilisez le serveur lié SQL Server 2000 et que le serveur n’a pas été mis à niveau vers SQL Server 2000 SP3 ou de SQL Server 2000 SP4, vous devez installer tout d’abord le Service Pack 3 de SQL Server 2000 ou SQL Server 2000 SP4.

Cause

Ce problème se produit car le système stockées procédures ne sont pas mis à niveau dans le cadre de l’installation du service pack. Vous devez manuellement mettre à niveau les procédures stockées système après l’installation de SQL Server 2000 Service Pack (SP3) ou SQL Server 2000 Service Pack 4 (SP4) par exécuter instcat.sql.

Résolution

Pour résoudre ce problème, sauvegarde la base de données master puis exécuter manuellement le script Instcat.sql fourni avec SQL Server 2000 SP3 ou SP4 sur le serveur SQL Server 2000 32 bits ou sur l’instance de SQL Server 7.0. Aucun redémarrage de SQL Server n’est requis.

Exemples d’exécuter Instcat.sql à l’aide de Osql.exe :

Utilisez le mode d’authentification Windows

Pour utiliser le mode d’authentification Windows pour le système de mise à niveau des procédures stockées sur une instance 32 bits de SQL Server 2000 ou sur le serveur SQL Server 7.0, procédez comme suit :
  1. Ouvrez une session sur l’ordinateur à l’aide d’un compte Windows qui est membre du rôle de serveur fixe sysadmin de SQL Server.
  2. Cliquez sur exécuter, type
    cmd.exe, puis cliquez sur OK.
  3. À l’invite de commandes, tapez une des commandes suivantes et appuyez sur ENTRÉE :

    Pour une instance par défaut
    osql -E -S <LinkedServerName> -i <Location>\instcat.sql
    Pour une instance nommée
    osql -E -S <LinkedServerName>\<InstanceName> -i <Location>\instcat.sql
    Remarque : < LinkedServerName >,
    < nom_instance >, et
    < emplacement > représente le nom du serveur lié, le nom de l’instance et le chemin d’accès complet du dossier qui contient le script Instcat.sql. Par défaut, ce dossier est C:\Program Files\Microsoft SQL Server\MSSQL\Install.
Utiliser le mode d’authentification de SQL Server

Pour utiliser le mode d’authentification de SQL Server pour mettre à niveau le système de procédures stockées sur une instance 32 bits de SQL Server 2000 ou sur un serveur SQL Server 7.0, procédez comme suit :

  1. Ouvrez une session sur l’ordinateur à l’aide d’un compte Windows.
  2. Cliquez sur exécuter, type
    cmd.exe, puis cliquez sur OK.
  3. À l’invite de commandes, tapez la commande suivante et appuyez sur ENTRÉE :

    Pour une instance par défaut
    osql -U <AdminLogin> -P <AdminPassword> -S <LinkedServerName> -i <Location>\instcat.sql
    Pour une instance nommée
     osql -U <AdminLogin> -P <AdminPassword> -S <LinkedServerName>\<InstanceName> -i <Location>\instcat.sql

    Remarque : < AdminLogin > et
    < AdminPassword > représentent le compte d’utilisateur qui est membre du rôle de serveur fixe sysadmin de SQL Server.
Remarque Après avoir exécuté le script Instcat.sql, de nombreux messages sont générés. Le dernier message indique si le script a été exécuté avec succès.

État

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

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

Microsoft SQL Server 2000 Édition Développeur, Microsoft SQL Server 2000 Édition Entreprise, Microsoft SQL Server 2000 Édition Personelle, Microsoft SQL Server 2000 Standard

Commentaires