2

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

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

This answer to this SO question似乎解决了一个非常相似的问题,并表明实际上可以Windows 10 上安装和运行 MS SQL Server 2000。我知道这个问题是关于 SQL Server 2000 而不是 MSDE,但我希望如果它适用于 SQL Server 2000,它也适用于 Desktop Engine 变体。

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

  • 我已经尝试将安装程序的兼容模式设置为 WinXP SP2 并以管理员权限运行

  • 我还没有尝试过先安装Win 7,然后MSDE,然后升级到Win 10,非常喜欢直接安装在Win 10上

4

3 回答 3

4

我找到了解决方法...

我发现它在安装过程中将几个 dll 提取到 temp 文件夹中,并且 MSI 日志抱怨加载其中一个。没有发现任何依赖加载问题,所以我尝试将它们全部复制到 C:\Windows\SysWow64,但其中一个(sqlunirl.dll)被拒绝访问,因为它是操作系统的一部分。如果我更改了该 dll 的所有者和权限,我可以将其替换为提取的那个,安装 MSDE,然后将其替换为原始的 Win10 那个。但是 SQL 服务管理器应用程序随后拒绝启动,但由于 exe 总是首先在自己的文件夹中查找 dll,因此将相同的 dll 放在 C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn 中。以防万一,我也将它复制到其他包含可执行文件的文件夹中。我'

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 用于 Administrators 组和 TrustedInstaller,因此它适用于任何语言。通用读取和通用执行权限是管理员组的默认权限,但我也应用了写入所有者,以便我可以将其设置回 TrustedInstaller 作为我找不到使用 TakeOwn.exe 将其重新设置的方法!)

于 2018-01-26T16:18:41.067 回答
2

这是对问题的反向回答,希望没问题!我找不到其他人提到它,所以希望它没问题。只是想说丹的解决方案也适用于从 Windows 10 卸载 MSDE 2000。

我有一台安装了 MSDE 2000 的 Win7 计算机,我将其升级到 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

希望对某人有所帮助!

于 2019-07-21T11:52:33.153 回答
0

它对我来说就像@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

提前致谢,

于 2020-08-28T08:25:24.383 回答