0

ウィザードを使用せずに Excel から SQL にデータをインポートしようとしています。これは毎週行う必要があるプロセスであるため、自動化が必須です。ただし、次のスクリプトを実行すると、エラー メッセージが表示されます。

脚本:

IF OBJECT_ID('TEST Weekly Sales D') IS NOT NULL
DROP TABLE [TEST Weekly Sales D]

SELECT *
INTO [TEST Weekly Sales D]
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0;Database=C:\.....\Weekly Sales D.xlsx',
   ['SHEET1$'])
GO

エラーメッセージ:

リンク サーバー "(null)" の OLE DB プロバイダー "Microsoft.ACE.OLEDB.12.0" がメッセージ "特定できないエラー" を返しました。メッセージ 7303、レベル 16、状態 1、行 5 リンク サーバー "(null)" の OLE DB プロバイダー "Microsoft.ACE.OLEDB.12.0" のデータ ソース オブジェクトを初期化できません。

サーバーにはExcelがありませんが、これは問題ではないと言われました。ACE OLEDB ドライバーをインストールしましたが、断続的に動作しているようです。

誰かが私が間違っているところを指摘してもらえますか?

4

1 に答える 1

2

最初に、Management Studio の ServerObjects > Linked Servers > Providers ツリーの下に ACE プロバイダーが表示されているかどうかを確認します。

次に、次のコマンドを実行します (「0 から 1 に変更されました」という情報が表示されるかどうかを確認するために、それらを個別に実行します)。

OPENROWSET を有効にするには:

sp_configure 'show advanced options'
GO
RECONFIGURE
GO

sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO

ACE ドライバーを構成するには、次のようにします。

EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

また、どのバージョンのドライバーをインストールしましたか? また、どのバージョンの SQL Server を実行していますか? x86 または 64?

よろしく

于 2013-01-15T14:38:55.287 に答える