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;