오늘 무심코 upgrade 했다가 고생했습니다.
이놈의 MS를 그냥 콱!
SQL 2000이 깔려있는 windows 2000서버를 2003으로 업그레이드를 하면
asp에서 ODBC를 통한 DB접근이 안됩니다. OLEDB를 통해도 마찬가지입니다.
위와 같은 문제가 발생했을때 아래와 같은 방법을 하나씩 해보시기 바랍니다.
(나 처럼 무모하게 업하는 사람도 없겠지만…)
우선 win 2003에서는 sql 2000 sp3이상이 설치되어 있어야 SQL이 정상동작 합니다.
나머지 부분은 아래 첨부한 part를 하나식 따라하면 됩니다.
PART A
——
-downloaded and ran Component Checker “Comcheck.exe”
(download was cc.exe, expanded into c:\comcheck\… with
over 470 files).
-find it at
http://www.microsoft.com/downloads/details.aspx?
FamilyID=8f0a8df6-4a21-4b43-bf53-
14332ef092c9&DisplayLang=en
-ran in on MDAC 2.7 SP1 (WinXP) and found oledb32.dll was
2.71.9031.4, not the expected version 2.71.9030.0…
PART B
——
-Find the correct version of oledb32.dll. I downloaded
both MDAC2.7RTM and MDAC2.7SP1 (they’re both named
mdac_typ.exe).
-Extract the files from each MDAC to separate directories
without kicking off an install (example:
mdac_typ /c /t:C:\MDAC2.7SP1).
-look for mdaccxpak.cab in that directory, open it using
explorer, and extract oledb32.dll to the same directory
as the cab.
-right-click on the extracted oledb32.dll, again using
explorer, then navigate to the “version” tab to see if
it’s the “expected” version (in my case, 2.71.9030.0 was
the correct one, and it came out of the MDAC 2.7 SP1
version)
저의 경우엔 MDAC2.8이어서 2.8 버젼을 받아 위와 같이 했습니다.
PART C
——
-In Explorer, goto Tools -> Folder Options -> View, and
allow viewing of “..Protected operating system files…”,
also turn on “Show hidden files and folders” (note your
original settings so you can switch back later).
-Drag c:\Windows\System32\dllcache\oledb32.dll into the
recycler (this will stop Win2k/XP system protection from
replacing the real oledb32.dll in the next step).
-Drag c:\program files\common files\system\ole
DB\oledb32.dll to the recycler as well.
-Click “Cancel” and confirm the cancel the one or two
times that the system protection asks about restoring
those versions from the WinXP install CD
-Copy the correct oledb32.dll (that you extracted in PART
B) into both c:\Windows\System32\dllcache\ and into
c:\program files\common files\system\ole DB
-Reboot (I don’t know if this is necessary, but I wanted
to make sure that nothing was “restored” while I wasn’t
looking.
PART D
——
-For piece of mind, navigate to the two directories again
and check the versions of oledb32.dll (not necessary,
this is paranoia)
-Run Comcheck.exe against “2.7 SP1(WinXP)” again. You
should get “No errors or warnings detected!”
-Change the permissions back to what they were before
from the first line of PART C.
NOW, Programatic ADO connections to SQL Server work
again, The “RETURN ALL ROWS” option of the SQL Enterprise
Manager works again, and all of those other broken things
that I’ve seen in the newsgroups mentioned with error
8007007F should work again as well!
-The question is which patch/application install/service
pack put the incorrect version there to begin with?
-Why is this fix not in TechNet?