SQL Server fournit la procédure stockée sp_columns_ex
pour fournir des informations de colonne dans les tables mises à disposition via le mécanisme de serveur lié. En théorie, vous pouvez utiliser sp_columns_ex
avec un serveur lié qui utilise ODBC pour accéder à un magasin de données tiers (par exemple, Salesforce.com via le pilote ODBC Salesforce.com d'Easysoft). En pratique, vous ne pouvez pas :sp_columns_ex
renvoie un jeu de résultats vide lorsqu'il est utilisé avec un serveur lié ODBC et bien que les tables mises à disposition par le serveur lié soient visibles dans SQL Server Management Studio, les colonnes ne le sont pas.
Selon Microsoft :
"sp_columns_ex renvoie un jeu de résultats vide si le fournisseur OLE DB du serveur lié spécifié ne prend pas en charge l'ensemble de lignes COLUMNS de l'interface IDBSchemaRowset"
Bien qu'il n'y ait pas de déclaration définitive quant à savoir si le fournisseur Microsoft OLE DB pour les pilotes ODBC prend en charge cette interface particulière, des tests approfondis avec les pilotes ODBC Easysoft et les pilotes d'autres fournisseurs suggèrent que ce n'est pas le cas.
Le problème réside donc avec l'interface OLE DB de Microsoft plutôt qu'avec un pilote ODBC particulier ou un back-end de serveur lié.
Vous pouvez toutefois créer une table SQL Server vide basée sur les colonnes d'une table Salesforce. Vous pouvez utiliser ce tableau vide pour voir comment les métadonnées de colonne Salesforce sont traduites en métadonnées de colonne SQL Server. Cet exemple concerne la table Account et suppose que le serveur lié est nommé SALESFORCE
:
select * into dbo.NewTable from openquery(SALESFORCE,'select * from Account') where 1 = 0