在 Windows 10 (x64) 上安装 Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) Release A

Install Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) Release A on Windows 10 (x64)

我需要在 Windows 10 上安装 MSDE 2000 Release A

安装 window 弹出然后立即关闭,没有错误消息。

这个answer to this SO question seemed to solve a very similar problem and indicates that it is in fact possible to install and run MS SQL Server 2000 on Windows 10。我知道这个问题是关于 SQL Server 2000 而不是 MSDE,但我希望如果它适用于 SQL Server 2000,它也适用于 Desktop Engine 变体。

关于什么可能会杀死安装程序的任何想法and/or我如何尝试解决这个问题?

我找到了解决方法...

我发现它在安装过程中将几个 dll 提取到临时文件夹,并且 MSI 日志抱怨加载其中一个。没有发现任何依赖项加载问题,所以我尝试将它们全部复制到 C:\Windows\SysWow64,但其中一个 (sqlunirl.dll) 被拒绝访问,因为它是 OS 的一部分.如果我更改了那个dll的所有者和权限,我就可以用解压的替换它,安装MSDE,然后用原来的Win10替换它。然而,SQL Service Manager 应用程序随后拒绝启动,但由于 exe 总是首先在自己的文件夹中查找 dll,因此将相同的 dll 放入 C:\Program Files (x86)\Microsoft SQL Server\Tools\Binn。为了以防万一,我还将它复制到其他也有可执行文件的文件夹中。我还没有测试过这个但是已经敲了一个快速批处理文件来安装(把它放在 Setup.exe 旁边,连同 sqlunirl.dll 从以前的安装尝试中从临时文件夹中抓取):

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\Tools\Binn"
copy /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\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 用于 Administrators 组和 TrustedInstaller,因此它适用于任何语言。Generic Read 和 Generic Execute 权限是管理员组的默认权限,但我还应用了 Write Owner,以便我可以设置它返回到 TrustedInstaller,因为我找不到使用 TakeOwn.exe 将其设置回来的方法!)

这是一个reverse-answer的问题,希望没问题!我找不到其他人提到它,所以希望它没问题。只是想说 Dan 的解决方案也适用于从 Windows10 卸载 MSDE 2000。

我有一台安装了 MSDE 2000 的 Win7 计算机,我将其升级到 Windows10。一切正常,直到我需要升级涉及卸载 MSDE 2000 的软件。它根本无法卸载 - MSI 将 运行 然后退出。

我所要做的就是重命名 sqlunirl.dll,运行 来自 add/remove 程序的卸载程序,然后重命名并改回权限:

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 的说法,它对我很有效,但是通过以下设置,我在安装前在 Windows\system32 中添加了 sqlunirl.dll dll。

我用过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

提前致谢,