如果將Excel匯入MSSQL 2008時,出現以下錯誤︰

OpenRowset/OpenDatasource☆
訊息 15281,層級 16,狀態 1,行 4
SQL Server
已封鎖元件 'Ad Hoc Distributed Queries' STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)


sys.xp_cmdshell☆
訊息 15281,層級 16,狀態 1,程序 xp_cmdshell,行 1
SQL Server
已封鎖元件 'xp_cmdshell' 程序 'sys.xp_cmdshell' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'xp_cmdshell' 的使用。如需有關啟用 'xp_cmdshell' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)


可使用下面圖片上的方法從介面上去設定︰

1、


2、


或使用語法設定︰

★開啟xp_cmdshell
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

★關閉xp_cmdshell ( 最後的 1 改成 0 )
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

──────────────────────────────────────────

★開啟OpenRowSet
EXEC sp_configure 'show advanced options',1
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries',1
RECONFIGURE;

★關閉OpenRowSet ( 最後的 1 改成 0 )
EXEC sp_configure 'show advanced options',1
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries',0
RECONFIGURE;


然後將要匯入的Excel檔放在 C:\new.xls,檢查Excel內容,第一行是欄位名稱,第二行是資料的部分,然後工作表名稱可以維持原本的Sheet1或是自己重新命名(記得下面的Sheet1$要配合修改) 

接著就可以在MSSQL 2008里執行SQL語句

SELECT * INTO CountryInfo FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\new.xls', [Sheet1$]) 

 

即可從Excel表中匯入資料到資料庫。

魔法魚 發表在 痞客邦 PIXNET 留言(0) 人氣()