這兩天做一個關於excel大量匯入到sql server 資料庫的小工具。
在網上廣泛的搜尋了一下發現並不難,最簡單的一種方式就是用sql中內建的一種匯入工具,只要用一句t-sql語句就可以搞定了。語句如下:
SELECT * into Student FROM OpenDataSource
( 'Microsoft.Jet.OLEDB.4.1,
'Data Source= "f:/student.xls";User ID=Admin;Password=;Extended properties="Excel 8.0;HDR=YES;IMEX=1"')
...Sheet1$
如法炮製之後發現,語句不可以執行,提示錯誤資訊:“sql server 阻止了對組建 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的訪問,因為此組件已作為此伺服器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關啟用 'Ad Hoc Distributed Queries' 的詳細資料,請參閱 SQL Server 聯機叢書中的 "介面區配置器"。
於是運行sql 語句啟用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
運行依舊出錯:
當我查閱n資料後發現可能是access 版本問題,查詢了自己機器上的版本是2000的,於是把介面改變成 Microsoft.Jet.OLEDB.3.51。開始還是提示錯誤:
測試過n多方法,也搜尋過很多答案,結果還是沒有給解決了,很是鬱悶啊。
由此也發現在學校裡面我們學的太狹隘了,知識面不夠廣,層次不夠深。所以遇到問題只好去百度,百度出來一大堆不知道是正確的還是錯誤的方法,然後一個個進行實踐。幸運的人很快的發現了答案,不幸的人在苦苦尋找著但未果。這裡要說的是網路是個好東西,但是未必可以讓你高效辦公。
同時也希望各位高手可以幫我看看這個問題到底是怎麼回事?
註:在匯入的過程中我的excel檔案是關閉的;