Base de données SQL Server liée donnant une erreur de "métadonnées incohérentes"
Je suis actuellement en cours d'exécution d'un logiciel tiers suite, qui utilise SQL Server comme base de données. J'ai une deuxième instance de SQL Server qui s'exécute dans un emplacement différent, et quelques applications que je suis bâtiment de dans cette instance de SQL Server a besoin d'accéder à certaines données dans le logiciel tiers. Donc, j'ai créé une connexion ODBC entre les cases et mettre en place le tiers de SQL server en tant que serveur lié sur ma version de SQL Server. Comme un test, j'ai couru quelque chose comme la déclaration suivante à partir de mon serveur SQL, accès à au moins un tiers des tableaux:
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
À qui je l'ai reçu ce message d'erreur:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
Cette erreur est la même pour n'importe quelle autre table j'essaie d'accès. Que signifie cette erreur signifie, et est-il un moyen de contourner cela?
source d'informationauteur dpmattingly
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce arrivé quelques fois. Une solution de contournement que j'ai trouvé est d'utiliser la fonction OPENQUERY.
Aussi, la sélection que vous posté ci-dessus est incorrecte 4 nom de la pièce (peut-être juste une faute de frappe mais je n'en suis pas sûr). Il devrait être
LinkedServerName.DBName.SchemaName.TableName
Si vous utilisez un nom en quatre parties de la syntaxe de requête, les données à partir du serveur lié base de données, vous pouvez recevoir ce message d'erreur. Pour contourner ce problème, vous pouvez utiliser la syntaxe OPENQUERY pour interroger les données à partir du serveur lié base de données. Vous pouvez activer l'indicateur de trace 7300 pour recevoir des informations plus détaillées sur ce message d'erreur. Pour activer l'indicateur de trace 7300, exécutez l'instruction Transact-SQL suivante:
J'ai résolu ce problème avec cette procédure
1) Étape 1:
• Dans SQL Server Management Studio ouvert les Serveurs Liés et puis "Nouveau Serveur Lié'.
• Est apparu à l'intérieur de l'assistant, Sélectionnez l'onglet Général.
• Spécifier le nom de l'alias dans "du serveur Lié".
• Sélectionnez SQL Native Client en tant que fournisseur.
• Ajouter sql_server dans "Nom du Produit" champ (c'est la magie).
• Dans "Source de Données" – indiquer le nom de l'hôte pour être utilisé en tant que serveur lié.
2) Étape 2:
• Dans l'onglet Sécurité – spécifiez correcte des options de sécurité (par exemple, le contexte de la sécurité)
3) Étape 3:
• Dans le Serveur de l'onglet Options – put "Accès aux Données", RPC, "Rpc" et "Utilisation de la Collaboration à Distance" pour être vrai.
4) Etape 4:
• Profiter.
http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html