SQL Serverは、ストアドプロシージャsp_columns_ex
を提供します リンクサーバーメカニズムを介して利用可能になったテーブルの列情報を提供します。理論的には、sp_columns_ex
を使用できます ODBCを使用してサードパーティのデータストアにアクセスするリンクサーバー(例:EasysoftのSalesforce.com ODBCドライバーを介したSalesforce.com)。実際には、次のことはできません:sp_columns_ex
ODBCリンクサーバーで使用すると空の結果セットを返します。リンクサーバーによって使用可能になったテーブルはSQLServerManagement Studioに表示されますが、列は表示されません。
Microsoftによると:
「指定されたリンクサーバーのOLEDBプロバイダーがIDBSchemaRowsetインターフェイスのCOLUMNS行セットをサポートしていない場合、sp_columns_exは空の結果セットを返します」
Microsoft OLE DB Provider for ODBCドライバーがこの特定のインターフェイスをサポートしているかどうかについての明確な声明はありませんが、EasysoftODBCドライバーと他のベンダーのドライバーの両方を使用した広範なテストではサポートされていないことが示されています。
したがって、問題は、特定のODBCドライバーやリンクサーバーのバックエンドではなく、MicrosoftのOLEDBインターフェイスにあります。
ただし、Salesforceテーブルの列に基づいて空のSQLServerテーブルを作成することはできます。この空のテーブルを使用して、Salesforceの列メタデータがSQLServerの列メタデータにどのように変換されるかを確認できます。この例はAccountテーブル用であり、リンクサーバーの名前がSALESFORCE
であると想定しています。 :
select * into dbo.NewTable from openquery(SALESFORCE,'select * from Account') where 1 = 0