none
EXCEL匯入SQL出現訊息7314 RRS feed

  • 問題

  • 環境: win2000 server + SQL 2000 server SP4

     

    我在本機用 SQL Query Analyzer 連線至本機的SQL Server, 用sa的帳號,

    執行以下這段程式碼是OK的, 9611.xls 放在本機的C:\底下.

    Code Snippet

    declare test_cursor cursor for   SELECT *  FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=C:\9611.xls;Extended Properties=Excel 8.0')...[sheet1$]

     

     

    但同的的程式碼, 我在本機用 SQL Query Analyzer 連線至遠端(同一個LAN底下)的SQL Server, 一樣用sa的帳號,

    但是卻不能執行, 出現底下錯誤訊息

     

    Code Snippet

    伺服器: 訊息 7314,層級 16,狀態 1,行 31
    OLE DB Provider 'Microsoft.Jet.OLEDB.4.0' 並未包含資料表 'sheet1$'。如果不是該資料表不存在,就是目前的使用者不具備該資料表的使用權限。
    OLE DB 錯誤追蹤 [Non-interface error:  OLE DB provider does not contain the table: ProviderName='Microsoft.Jet.OLEDB.4.0', TableName='sheet1$']。

     

     

    如果我把9611.xls COPY到遠端的SQL Server 的C:\底下, 再從那邊用 SQL Query Analyzer 執行上面那段程式碼,

    這樣又OK.

     

    以上問題請高手解惑.謝謝.

     

    === 編輯者 YCL8000 @ 25 一月 2008 2:34 上午 UTC===
    我測試的結果是,底下這段程式碼中的C:\9611.xls這個檔案,必需在那台SQL SERVER的機器上才行,也就是從本機連線至遠端的SQL SERVER時,遠端的SQL SERVER,必需有這個檔案才行. 請高手解惑,能不能不將檔案COPY過去,從本機一樣能操作.
    declare test_cursor cursor for   SELECT *  FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=C:\9611.xls;Extended Properties=Excel 8.0')...[sheet1$]

     

     

    2008年1月25日 上午 02:13

解答

  • 連線到遠端下指令 只是把指令送到遠端執行而已

     

    對遠端的電腦來說 C:就是他自己的C: (不太可能遠端莫名其妙就存取到別人的C吧!!)

     

     

    試試看在遠端建立網路磁碟機 連線到本地端存放EXCEL檔案的地方

    然後在試試看!!

     

    希望能解決您的問題!!

     

    2008年2月14日 上午 09:19

所有回覆

  • 連線存取本機的 Excel 檔可以,但是連線遠端的卻不行,常見的原因就是權限不足,建議參考 sp_addlinkedserver 的範例來存取該 Excel,若不行再去使用 SQL Server 2000 SP3 的新功能:SAD

     

    參考資料:

    2008年1月25日 下午 05:21
    版主
  • 連線到遠端下指令 只是把指令送到遠端執行而已

     

    對遠端的電腦來說 C:就是他自己的C: (不太可能遠端莫名其妙就存取到別人的C吧!!)

     

     

    試試看在遠端建立網路磁碟機 連線到本地端存放EXCEL檔案的地方

    然後在試試看!!

     

    希望能解決您的問題!!

     

    2008年2月14日 上午 09:19