SQL Server leverer den lagrede procedure sp_columns_ex
at give kolonneoplysninger i tabellerne, der er gjort tilgængelige via den linkede servermekanisme. I teorien kan du bruge sp_columns_ex
med en forbundet server, der bruger ODBC til at få adgang til et tredjeparts datalager (f.eks. Salesforce.com gennem Easysofts Salesforce.com ODBC-driver). I praksis kan du ikke:sp_columns_ex
returnerer et tomt resultatsæt, når det bruges med en ODBC-linket server, og selvom tabeller, der er gjort tilgængelige af den linkede server, er synlige i SQL Server Management Studio, er kolonner det ikke.
Ifølge Microsoft:
"sp_columns_ex returnerer et tomt resultatsæt, hvis OLE DB-udbyderen af den angivne linkede server ikke understøtter COLUMNS rækkesættet af IDBSchemaRowset-grænsefladen"
Selvom der ikke er nogen endelig erklæring om, hvorvidt Microsoft OLE DB-udbyderen til ODBC-drivere understøtter denne særlige grænseflade, tyder omfattende tests på både med Easysoft ODBC-drivere og drivere fra andre leverandører, at det ikke gør det.
Problemet ligger derfor i Microsofts OLE DB-grænseflade snarere end med en bestemt ODBC-driver eller linket server-backend.
Du kan dog oprette en tom SQL Server-tabel baseret på kolonnerne i en Salesforce-tabel. Du kan bruge denne tomme tabel til at se, hvordan Salesforce-kolonnemetadata oversættes til SQL Server-kolonnemetadata. Dette eksempel er for kontotabellen og antager, at den linkede server hedder SALESFORCE
:
select * into dbo.NewTable from openquery(SALESFORCE,'select * from Account') where 1 = 0