2014-05-14 60 views
0

我在powershell cmd提示符下運行OLE DB枚舉器,看到列出了「Microsoft.ACE.OLEDB.12.0」。但是,當我運行需要使用OLE DB提供程序的程序時,它會出現錯誤:「Microsoft.ACE.OLEDB.12.0提供程序未在本地計算機上註冊。有人可以告訴我爲什麼找不到提供程序當它已經存在。Microsoft ACE OLE DB 12.0 PowerShell錯誤

我下載了微軟數據庫訪問引擎2010 Redistributible,仍然有同樣的錯誤

$filepath = 'C:\Users\raoashw\Documents\Incident_Dimension_and_Fact Tables\Incident_Time_Dimension_Table.xlsm' 
    $connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Macro;HDR=YES`";" 
    $qry= 'select * from [backupset$]' 
    $sqlserver = 'c0003131.itcs.hp.com' 
    $dbname = 'ads' 
    $tblname = 'ExcelData_Fill' 
    function Get-ExcelData 
    { 
     param($connString, $qry='select * from [Untitled$]') 
     $conn = New-Object System.Data.OleDb.OleDBConnection($connString) 
     $conn.open() 
     $cmd = New-Object System.Data.OleDb.OleDbCommand($qry,$conn) 
     $da = New-Object System.Data.OleDb.OleDbDataAdapter($cmd) 
     $dt = New-Object System.Data.DataTable 
     [void]$da.fill($dt) 
     $conn.close() 
     $dt 


    } 

    function Write-DataTableToDatabase 
    { 
     param($dt,$destServer,$destDb,$destTbl) 
     $connectionString = "Data Source=$destServer;Integrated Security=true; Initial   Catalog=$destdb;" 
     $bulkCopy= New-Object ("Data.SqlClient.SqlBulkCopy") $connectionString 
     $bulkCopy.DestinationTableName= "$destTbl" 
     $bulkCopy.WriteToServer($dt) 

    } 

    $dt = Get-ExcelData $connString $qry 
    Write-DataTableToDatabase $dt $sqlserver $dbname $tblname 

有人可以告訴我如何解決這個問題?

回答

相關問題