SQL Server tillhandahåller den lagrade proceduren sp_columns_ex
att tillhandahålla kolumninformation i tabellerna som görs tillgängliga via den länkade servermekanismen. I teorin kan du använda sp_columns_ex
med en länkad server som använder ODBC för att komma åt ett datalager från tredje part (t.ex. Salesforce.com via Easysofts Salesforce.com ODBC-drivrutin). I praktiken kan du inte:sp_columns_ex
returnerar en tom resultatuppsättning när den används med en ODBC-länkad server och även om tabeller som görs tillgängliga av den länkade servern är synliga i SQL Server Management Studio, är kolumner inte det.
Enligt Microsoft:
"sp_columns_ex returnerar en tom resultatuppsättning om OLE DB-leverantören för den angivna länkade servern inte stöder COLUMNS-raduppsättningen i IDBSchemaRowset-gränssnittet"
Även om det inte finns något definitivt uttalande om huruvida Microsoft OLE DB Provider för ODBC-drivrutiner stöder detta specifika gränssnitt, tyder omfattande tester både med Easysoft ODBC-drivrutiner och drivrutiner från andra leverantörer att det inte gör det.
Problemet ligger därför i Microsofts OLE DB-gränssnitt snarare än med en viss ODBC-drivrutin eller länkad serverbackend.
Du kan dock skapa en tom SQL Server-tabell baserat på kolumnerna i en Salesforce-tabell. Du kan använda den här tomma tabellen för att se hur Salesforce-kolumnsmetadata översätts till SQL Server-kolumnmetadata. Det här exemplet är för kontotabellen och förutsätter att den länkade servern heter SALESFORCE
:
select * into dbo.NewTable from openquery(SALESFORCE,'select * from Account') where 1 = 0