1

Sql サーバー 2008 R2 でリンク サーバーを作成しようとしていますが、Microsoft から「Office 2010 Access AD エンジンの 64 ビット バージョン」exe をダウンロードしようとしました。

残念ながら、このインストールを行う前に、リンクサーバーを追加しようとしましたが、失敗しました:

EXEC sp_addlinkedserver 'LinkedServer1', 'Excel', 'Microsoft.Jet.OLEDB.4.0', 'D:\Folder\Excel1.xls', '', 'Excel 8.0', ''

(別の方法がある場合は、この追加方法が正しくない場合はお知らせください!)

ダウンロードを行った後、このサーバーが既に存在するというメッセージが表示 されました。

ダウンロード後に同じ方法で「LinkedServer2」を追加しようとしました(Excel8.0の代わりにExcel5.0をパラメーターとして使用しました)。できます!ただし、削除しようとしましたが、この古いリンク サーバーはまだ存在しているようです。

それが実際にそこにあることを確認するために、私はこれを書きました:

select * from sys.servers where is_linked =1 

およびプロパティの詳細:

 server_id: 1
 name= LinkedServer1
 product= Excel
 provider = Microsoft.Jet.OLEDB.4.0
 data_source= D:\Folder\Excel1.xls
 location:NULL 
 provider_string: Excel 8.0 
 is_linked=1 
 is_data_access_enabled=1
 modify_date= 2010-08-15 19:56:02.307

私が何か間違ったことをしているのに気づいたら教えてください!「LinkedServer2」をドロップしてみましたが、うまくいきました!ただし、次のように同じリンクされた server1 を削除しようとしている場合でも:

Exec sp_dropserver @server = 'LinkedServer1'

私には失敗します、同じメッセージです! 「サーバー 'LinkedServer1' にはまだリモート ログインまたはリンクされたログインがあります。」

プロバイダー文字列を「Excel 5.0」として使用してリンク サーバーを追加しようとすると、正常に追加および削除されました。


別の更新: これは再び失敗しています: EXEC(' INSERT INTO Table1 SELECT col1, excel2col, excel3col, Replace(Replace(excel4col, ''"'', '''') FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0 '',''Excel 5.0;HDR=はい;データベース='+'D:\Folder\Excel1.xls'', [Sheet2$])')

エラー: OLE DB プロバイダー 'Microsoft.Jet.OLEDB.4.0' は、プロバイダーがシングル スレッド アパートメント モードで実行するように構成されているため、分散クエリに使用できません。構成を次のように変更しました。

EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
4

1 に答える 1

0

64 ビット/Sql Server R2 の問題のようです:

リンク サーバーを明示的に削除するには、次を使用する必要があります。

これにより、無効なリンク サーバーの問題が解決されます。ただし、Microsoft.jet.OLEDB.4 が機能していないため、同じエラーが引き続き発生します。

<Errors> <Error>ERROR CAUGHT: OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.</Error> </Errors>

Microsoft.ACE.OLEDB.12.0 のダウンロードを試み、これを使用してリンク サーバーを追加しました。ただし、OpenRowSet を使用してテーブルに挿入しようとすると、新しいエラーが発生します。

    Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" reported an error. Access denied.
Msg 7301, Level 16, State 2, Line 1
Cannot obtain the required interface ("IID_IDBCreateCommand") from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".

以前にこれに直面した人、またはこれを解決する方法を知っている人はいますか?

于 2010-08-16T17:37:27.273 に答える