「OpenRowset」を使用したSQLスクリプトのエラー
-
09-10-2019 - |
質問
私は自分のSQLスクリプトに問題があります:
SELECT
SP.[MobileNumber],
SP.[LastName],
SP.[FirstName]
FROM SampleTable1 SP
INNER JOIN OPENROWSET
(
'Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\devpc11\sample.xls;',
'SELECT
MobileNumber,
LastName,
FirstName
FROM [SampleData$]') T
ON SP.[MobileNumber] = T.[MobileNumber]
GO
これを実行しようとすると、このエラーが生成されます。
MSG 7357、レベル16、状態2、行1は、[[sampledata $]のfirstName、firstNameを選択]オブジェクトを処理できません。 OLE DBプロバイダー「Microsoft.jet.oledb.4.0 "for linked server"(null) "は、オブジェクトに列がないか、現在のユーザーにそのオブジェクトに権限がないことを示します。
これに対する解決策はありますか?過去3時間で本当に見つかりません。基本的に、Excelファイルからデータを操作してから、SQL Server 2005データベースに保存したいだけですが、今のところ、Excelファイルからデータを取得したいSQL Server ..ヘルプをありがとう..
解決
これをローカルでスプレッドシートで動作させました。忘れる OPENROWSET
Excelスプレッドヒートに名前付き範囲を作成します。 TIOこれを行い、必要な列(ヘッダーを含む)を強調表示し、右クリックして「範囲の名前」を選択します。これに名前を付けてください、これはあなたのテーブル名になります。
スプレッドシートを保存して閉じます。 SQL Serverが開いている場合、SQL Serverにアクセスすることはできません。
リンクされたサーバーを追加します。指示に従ってください セクションe 以下では、Excelスプレッドシートにリンクされたサーバーを追加する方法を説明します。
もう一度指示に従って、DSを非常に幸せに照会できるはずです。
これが私のために働くコードです:
EXEC sp_addlinkedserver 'ExcelSource4',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\sqlss.xls',
NULL,
'Excel 5.0';
GO
SELECT *
FROM ExcelSource4...MyTable2;
そして最後に。いくつかの答えを受け入れ、役立つものを投票し始めます。これはStackoverflowの生命線です。