sql >> Databasteknik >  >> RDS >> Database

Salesforce.com länkade servrar och sp_columns_ex

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

  1. Är det möjligt att använda retur i lagrat förfarande?

  2. Förstå dödlägen i MySQL och PostgreSQL

  3. Varför börjar tabellnamn i SQL Server med dbo?

  4. Varför återvänder pg_restore framgångsrikt men återställer inte min databas?