質問

私は自分の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

  1. Excelスプレッドヒートに名前付き範囲を作成します。 TIOこれを行い、必要な列(ヘッダーを含む)を強調表示し、右クリックして「範囲の名前」を選択します。これに名前を付けてください、これはあなたのテーブル名になります。

    http://www.homeandlearn.co.uk/me/mes9p2.html

  2. スプレッドシートを保存して閉じます。 SQL Serverが開いている場合、SQL Serverにアクセスすることはできません。

  3. リンクされたサーバーを追加します。指示に従ってください セクションe 以下では、Excelスプレッドシートにリンクされたサーバーを追加する方法を説明します。

    http://msdn.microsoft.com/en-us/library/ms190479.aspx

  4. もう一度指示に従って、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の生命線です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top