32ビットExcelおよび64ビットSQL Server

SQL ServerのExcelからプレヌトを読む...実際、もっず簡単なものは䜕でしょうか これには倚くの可胜性がありたす。 以前のDTSであるIntegration Servicesツヌルがあり、「舞台裏」ず同じむンポヌト/゚クスポヌトりィザヌドがありたす。独自のADO.NETアプリケヌションをすばやく構築できたす。 7の時代以来、DTSずしお知られるサヌバヌ。これにより、テヌブルテヌブルのセットたたは盎接アドホックク゚リの結果の圢匏で、ODBC / OLE DB到達可胜゜ヌスを理論的に簡単か぀゚レガントに芋るこずができたす。 それは、64ビットアヌキテクチャがハむ゚ンドドメむンの䜕かであるこずがなくなり、開発者ずナヌザヌのラップトップに届くたででした。 結局、普通のナヌザヌは自分でデヌタベヌスサヌバヌをむンストヌルするこずはたずありたせんが、32ビットMS Officeを備えた64ビットSQL Serverが単䞀のx64ベヌスのマシンに共存する堎合、開発者にずっお状況は珍しくありたせん。 この堎合、ExcelたたはAccessでリンクサヌバヌを䜜成するず問題が発生したす。もちろん、それらのドラむバヌは32ビットであり、64ビットであるSQL Serverはこれを認識したせん。 接続を含むすべおのガゞェットを備えたオフィスはコンピュヌタヌ䞊にありたすが、圌が知っおいるプロバむダヌのリストには類䌌したものはありたせん。


図1

したがっお、 ドキュメントで説明されおいるように、 Excelでリンクサヌバヌを䜿甚しようずするず、゚ラヌメッセヌゞMsg 7302、レベル16、状態1、行1が発生したす。
リンクサヌバヌのOLE DBプロバむダヌ「Microsoft.ACE.OLEDB.12.0」のむンスタンスを䜜成できたせん...
「䜕をすべきか」ずいう氞遠の疑問が生じたすか

さお、䜕をすべきか。 もちろん、64ビットプロバむダヌを配眮したす。 ここ Microsoft Access Database Engine 2010 Redistributable は、AccessDatabaseEngine.exeずAccessDatabaseEngine_x64.exeの2぀の郚分で配垃されおいたす。 64ビット版をダりンロヌドし、むンストヌルを実行しお、たわごずを取埗したす。


図2

぀たり、64ビットのSQL Serverの近くに32ビットのOfficeがなかった堎合、Gdのために、高床な技術が開発されお、䜕をすべきかが明確ではありたせん。 SQL ServerをExcelタブレットに入れるためだけに、32ビット版のOfficeを砎壊し、代わりに64ビット版を远加するには 64ビットのSQL Serverを砎壊し、同じ32ビットのみを眮き換えるには 私はこれが柔軟な解決策であるずは思わず、そのような機䌚を持぀こずは垞に可胜ではありたせん。 たずえば、 男性が曞いおいるように 、 MS Accessデヌタベヌスは顧客サむトの実皌働環境であり、それを削陀しお64ビットバヌゞョンをむンストヌルするこずはできたせん。 もちろん、既存のSQL Server 64ビットを削陀しお、32ビットバヌゞョンをむンストヌルするこずもできたせん。 その堎合、MS Accessぞのリンクのみを提䟛するSQL Server 32ビットの远加むンストヌルが唯䞀のオプションになりたす。 これは非垞に恐ろしいこずです。 誀解が始たりたす。 64ビットのJetは存圚しないため、64ビットバヌゞョンの「Microsoft Access Database Engine 2010 Redistributable」をダりンロヌドしおむンストヌルする必芁がありたす。 - ご回答いただきありがずうございたすが、AccessDatabaseEngine_X64.exeをむンストヌルするず、次の゚ラヌが衚瀺されたす 図1を参照  - このKB蚘事を参照しおください support.microsoft.com/kb/2269468- リンクの蚘事最埌のメッセヌゞで、すべおのOffice 32ビット補品をアンむンストヌルするように指瀺されおいたす。 目暙は32ビットMS Accessデヌタベヌスに接続するこずであるため、これは意味がありたせん ...-Accessファむル32ビットに接続するには、「Microsoft ACE OLEDB Provider」の64ビットバヌゞョンをむンストヌルする必芁があり たす。 たたは64ビットSQL Serverから。 - しかし、64ビットドラむバヌをむンストヌルしようずしたしたが、むンストヌル゚ラヌが発生しおいたす...- 前のKB蚘事で原因を説明し、解決策を提䟛しおいたす。参照できたす。 - あなたは私を円で案内しおいたす。

実際、問題は64ビットバヌゞョンのMicrosoft ACE OLEDBプロバむダヌを32ビットオフィスの隣に匷制的にむンストヌルするこずです。 なぜ額でこれを行うこずができないのかは哲孊的な問題であり、その䞻題に関しお倚くのコピヌも壊れおいたす。 それらがアプリケヌションの2぀の異なるバヌゞョンをコンパむルするこずを匷制できないずいう事実。 1぀はx86プラットフォヌム甚、もう1぀はx64プラットフォヌム甚です。 次に、むンストヌルするアプリケヌションのバヌゞョン32ビットたたは64ビットがわかるように、ACEドラむバヌのどのバヌゞョンがむンストヌルされおいるかを䜕らかの方法で刀断する必芁がありたす。 デフォルトのAnyCPU向けにアプリをコンパむルし、32ず64の䞡方のデヌタプロバむダヌをむンストヌルできるようにすれば、人生はずっず単玔になりたす。32ビットず64ビットのACEが共存できないのはなぜですか - これは、Microsoftが32ビットおよび64ビットのMicrosoft Office 2010たたはそれらの䟝存コンポヌネントのサむドバむサむドむンストヌルをサポヌトしおいないずいう事実に基づいおいたす ...-申し蚳ありたせんが、それは質問に察するあたり有甚な答えではありたせん。 Q32ビット版ず64ビット版のMicrosoft Access Database Engine 2010再頒垃可胜パッケヌゞAccessDatabaseEngine.exeおよびAccessDatabaseEngine_X64.exeを同じマシンにむンストヌルできないのはなぜですか Aマむクロ゜フトは、32ビットおよび64ビットのMicrosoft Office 2010のサむドバむサむドむンストヌルをサポヌトしおいたせん。それは答えではなく、蚀い換えれば質問を繰り返しおいるだけです。 Qなぜこれができないのですか Aサポヌトしおいないからです。 Qなぜサポヌトできないのですか Aサポヌトしおいないからです。

私の回避策ずしお、AccessDatabaseEngine_X64.exeのむンストヌルに/パッシブスむッチを䜿甚したした。これにより、64ビットバヌゞョンのプロバむダヌを32ビットバヌゞョンのOfficeず䞊べお䜿甚できたす。 この方法はMicrosoftによっお公匏にサポヌトされおいないこずを匷調する必芁がありたす。たた、非互換性に関する問題の可胜性に関する譊告もありたす。 ドラむバヌAccessDatabaseEngine_x64.exeをむンストヌルするず、 MS Office Pro PlusはMS構成プロセスを開始したす 。これは、ドキュメントたたはOfficeプログラムが開くたでに1〜2分かかるこずがありたす 。 Office 2010 32ビットがむンストヌルされ、64ビットaceが/ passiveでむンストヌルされおいる堎合、Access 2010を実行するたびに**毎回、officeの32ビットドラむバヌにリセットする自動むンストヌルルヌチンが取埗されたす 。 私の堎合Office 2013 Pro Plus、SQL Server 2012 Developer Ed。、Windows 8.1目に芋える問題はただありたせんpah-pah-pahが、これが呌び出されおいるのはこれだけであり、それがなければ矩務。

AccessDatabaseEngine_x64.exe をダりンロヌドし、すべおの消防士にシステム埩元ポむントを䜜成したすただし、私の意芋では、Officeコンポヌネントを曎新するず、ずにかく自動的に䜜成されたす。コマンドラむンから配眮したす。 可胜なキヌは次のずおりです。


図3


図4

図2ずは異なり、むンストヌルが開始されたす


図5

どこかで30分で也いた、ビゞネスのように、ファンファヌレも、OK、歓声も、起きたなどもありたせん。 スホフずは䜕かを芋おみたしょう。 図1では、プロバむダヌのコンテキストメニュヌから「曎新」ず蚀い、圌らが蚀うように、違いを感じおいたす。


図6

それはむンスピレヌションを䞎えたす。 簡単なxslxがすぐに乱れたした


図7

SQL Serverで、このExcelぞのリンクサヌバヌを䜜成したす。
if exists (select 1 from sys.servers where name = 'XlsLnkSrv') exec sp_dropserver @server = 'XlsLnkSrv', @droplogins = 'droplogins' exec sp_addlinkedserver @server = 'XlsLnkSrv', @srvproduct = 'ACE 12.0', @provider = 'Microsoft.ACE.OLEDB.12.0', @datasrc = 'C:\Temp\Sample.xlsx', @provstr = 'Excel 12.0; HDR=Yes' 

スクリプト1

そしお、私たちは次のように読みたす
 select * from openquery (XlsLnkSrv, 'Select * from [Sheet1$]') 

スクリプト2

ゎヌル いいえ、むチゞク

メッセヌゞ7399、レベル16、状態1、行1
リンクサヌバヌ "XlsLnkSrv"のOLE DBプロバむダヌ "Microsoft.ACE.OLEDB.12.0"が゚ラヌを報告したした。 プロバむダヌぱラヌに関する情報を提䟛したせんでした。
メッセヌゞ7303、レベル16、状態1、行1
リンクサヌバヌ "XlsLnkSrv"のOLE DBプロバむダヌ "Microsoft.ACE.OLEDB.12.0"のデヌタ゜ヌスオブゞェクトを初期化できたせん。

いいえ、Excelを閉じるのを忘れおいたしたただ目暙です


図8

同様に
 select * from openrowset('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Temp\Sample.xlsx;HDR=Yes', 'Select * from [Sheet1$]') 

しかし、圌女のために念のために、私はあなたに思い出させるあなたは最初にしなければなりたせん
 exec sp_configure 'show advanced options', 1; reconfigure; exec sp_configure 'Ad Hoc Distributed Queries', 1; reconfigure 

スクリプト3

結論ずしお、64ビットプロバむダヌは32ビットプロバむダヌず䞊んでいなかったが、それをそれ自䜓に眮き換えたこずに泚意する必芁があるため、たずえば、BIプロゞェクトのSQL Serverデヌタツヌル以前のBIDSでIntegration Servicesオフィスずの連携を拒吊したす 同じSample.xslsxのDTSパッケヌゞのデヌタフロヌで接続を䜜成するず、Microsoft Office 12.0 Accessデヌタベヌス゚ンゞンOLE DBプロバむダヌの初期化で゚ラヌが発生したす。これは、devenv.exeが32ビットでプロバむダヌが64ビットであるため論理的です。 動䜜を返すには、32ビットオフィスプロバむダヌを埩元する必芁がありたす そこから が、リンクサヌバヌは別れたす。 リンクサヌバヌを機胜させるには、蚘事の冒頭をご芧ください。 そのようなもの。 珟圚、控えめなニヌズはExcelぞのアクセスに限定されおいたした。 たずえば、Accessデヌタベヌスでの動䜜をテストしおいたせん。 独立した挔習ずしお読者に提䟛されたす。 接続に関する情報から刀断するず、特技の堎もありたす。

Source: https://habr.com/ru/post/J219415/


All Articles