SQL Server stellt die gespeicherte Prozedur sp_columns_ex
bereit um Spalteninformationen in den Tabellen bereitzustellen, die über den Linked-Server-Mechanismus verfügbar gemacht werden. Theoretisch können Sie sp_columns_ex
verwenden mit einem verknüpften Server, der ODBC verwendet, um auf einen Datenspeicher eines Drittanbieters zuzugreifen (z. B. Salesforce.com über den Salesforce.com-ODBC-Treiber von Easysoft). In der Praxis können Sie nicht:sp_columns_ex
gibt ein leeres Resultset zurück, wenn es mit einem ODBC-Verbindungsserver verwendet wird, und obwohl Tabellen, die vom Verbindungsserver verfügbar gemacht werden, in SQL Server Management Studio sichtbar sind, Spalten nicht.
Laut Microsoft:
"sp_columns_ex gibt eine leere Ergebnismenge zurück, wenn der OLE DB-Provider des angegebenen Verbindungsservers das COLUMNS-Rowset der IDBSchemaRowset-Schnittstelle nicht unterstützt"
Obwohl es keine endgültige Aussage darüber gibt, ob der Microsoft OLE DB-Anbieter für ODBC-Treiber diese spezielle Schnittstelle unterstützt, deuten umfangreiche Tests sowohl mit Easysoft ODBC-Treibern als auch mit Treibern anderer Anbieter darauf hin, dass dies nicht der Fall ist.
Das Problem liegt daher eher bei der OLE DB-Schnittstelle von Microsoft als bei einem bestimmten ODBC-Treiber oder Back-End eines verknüpften Servers.
Sie können jedoch basierend auf den Spalten in einer Salesforce-Tabelle eine leere SQL Server-Tabelle erstellen. Sie können diese leere Tabelle verwenden, um zu sehen, wie Salesforce-Spaltenmetadaten in SQL Server-Spaltenmetadaten übersetzt werden. Dieses Beispiel gilt für die Account-Tabelle und geht davon aus, dass der Verbindungsserver SALESFORCE
heißt :
select * into dbo.NewTable from openquery(SALESFORCE,'select * from Account') where 1 = 0