Установите Microsoft SQL Server 2000 Desktop Engine (MSDE 2000), выпуск A в Windows 10 (x64)

Мне нужно установить MSDE 2000 Release A на Windows 10.

Откроется окно установки, а затем сразу же закроется без сообщения об ошибке.

Этот ответ на этот вопрос SO, похоже, решил очень похожую проблему и указывает на то, что на самом деле можно установить и запустить MS SQL Server 2000 в Windows 10. Я знаю, что этот вопрос касается SQL Server 2000, а не MSDE, но я надеюсь, что если он будет работать для SQL Server 2000, он также будет применяться к варианту Desktop Engine.

Любые идеи о том, что может убить установщик и / или как я мог бы попытаться выяснить это?

  • Я уже пытался установить режим совместимости установщика для WinXP SP2 и запустить с правами администратора

  • Я еще не пытался сначала установить Win 7, затем MSDE, затем обновить до Win 10, и очень предпочел бы установить непосредственно на Win 10

1 ответ

Решение

Я нашел обходной путь...

Я обнаружил, что во время установки он извлекал несколько dll-файлов во временную папку, и журнал MSI жаловался на загрузку одного из них. Ни с одной из них не было проблем с загрузкой зависимостей, поэтому я попытался скопировать их все в C:\Windows\SysWow64, но одна из них (sqlunirl.dll) получила отказ в доступе, поскольку она является частью операционной системы. Если я поменяю владельца и разрешения этого dll, я смогу заменить его на извлеченный, установить MSDE, а затем заменить его на оригинальный Win10. Однако приложение SQL Service Manager затем отказывается запускаться, но, поскольку exes всегда сначала ищут dll в своей собственной папке, поместите эту же dll в C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn. На всякий случай я также скопировал его в другие папки, в которых есть исполняемые файлы. Я еще не проверил это, но установил быстрый пакетный файл для установки (поместите его рядом с Setup.exe вместе с sqlunirl.dll, извлеченным из папки temp из предыдущей попытки установки):

takeown /f C:\Windows\SysWOW64\sqlunirl.dll /a
icacls C:\Windows\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:f
IF NOT EXIST C:\Windows\SysWOW64\sqlunirl.bak move C:\Windows\SysWOW64\sqlunirl.dll C:\Windows\SysWOW64\sqlunirl.bak
copy /y "%~dp0sqlunirl.dll" C:\Windows\SysWOW64

"%~dp0Setup.exe" (plus your extra parameters such as SAPWD=PASSWORD)

move /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn"
copy /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\80\COM"
copy /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\Mssql$InstanceName\BinnMSSQL$InstanceName\Binn"
move /y C:\Windows\SysWOW64\sqlunirl.bak C:\Windows\SysWOW64\sqlunirl.dll
icacls C:\Windows\SysWOW64\sqlunirl.dll /remove *S-1-5-32-544
icacls C:\Windows\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:(GR,GE,WO)
icacls C:\Windows\SysWOW64\sqlunirl.dll /setowner *S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

(Примечание: SID используются для группы администраторов и TrustedInstaller, так что она работает на любом языке. Общие права на чтение и общие права на выполнение по умолчанию для группы администраторов, но я также применяю Write Owner, чтобы я мог установить его обратно в TrustedInstaller как Я не мог найти способ использовать TakeOwn.exe, чтобы установить его обратно!)

Это своего рода обратный ответ на вопрос, надеюсь, что все в порядке! Я не мог найти никого, кто бы упоминал об этом, так что надеюсь, что все в порядке. Просто хотел сказать, что решение Дэна также работает для удаления MSDE 2000 из Windows 10.

У меня был компьютер с Win7, на котором был установлен MSDE 2000, который я обновил до Windows 10. Все работало нормально, пока мне не потребовалось обновить программное обеспечение, которое включало удаление MSDE 2000. Он просто не удалялся - MSI запускался, а затем просто выходил.

Все, что мне нужно было сделать, это переименовать sqlunirl.dll, запустить деинсталлятор из программ добавления / удаления, затем переименовать его и снова изменить разрешения:

takeown /f %SystemRoot%\SysWOW64\sqlunirl.dll /a
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:f
IF NOT EXIST %SystemRoot%\SysWOW64\sqlunirl.bak move %SystemRoot%\SysWOW64\sqlunirl.dll %SystemRoot%\SysWOW64\sqlunirl.bak

< RUN UNINSTALLER HERE >

move /y C:\Windows\SysWOW64\sqlunirl.bak C:\Windows\SysWOW64\sqlunirl.dll
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /remove *S-1-5-32-544
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:(GR,GE,WO)
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /setowner *S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

Надеюсь, что это помогает кому-то!

Это помогло мне сделать то, что написано @Eugene Kang, но со следующей настройкой я добавляю dll sqlunirl.dll в Windows\system32 перед установкой.

Я использовал sql server 2000 sp4.

Итак, я добавляю одну строку в ваш скрипт:

takeown /f %SystemRoot%\SysWOW64\sqlunirl.dll /a
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:f
copy %SystemRoot%\SysWOW64\sqlunirl.dll %SystemRoot%\system32\sqlunirl.dll
IF NOT EXIST %SystemRoot%\SysWOW64\sqlunirl.bak move %SystemRoot%\SysWOW64\sqlunirl.dll %SystemRoot%\SysWOW64\sqlunirl.bak

< RUN UNINSTALLER HERE >

move /y C:\Windows\SysWOW64\sqlunirl.bak C:\Windows\SysWOW64\sqlunirl.dll
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /remove *S-1-5-32-544
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:(GR,GE,WO)
icacls %SystemRoot%\SysWOW64\sqlunirl.dll /setowner *S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

Заранее спасибо,

Другие вопросы по тегам