我正在尝试在 Windows 7 64 位 PC 上安装 SQL Server 2012 Express。它也无法安装 SQL Server 2008 R2。引导程序提取所有文件,运行 setup.exe(带有 UAC 弹出窗口),然后(据我所知)尝试启动拒绝运行的 sceneengine.exe。
MSSQL 2012 Express 的错误详细信息如下:
描述:停止工作
问题签名:
问题事件名称:CLR20r3
问题签名 01:scenarioengine.exe 问题签名 02:11.0.2100.60
问题签名 03:4f35e1de
问题签名 04:Microsoft.SqlServer.Chainer.Infrastructure
问题签名 05:11.0.0.0
问题签名 06:4f35e1dd
问题签名 07:200
问题签名 08:179
问题签名 09:ZAGSF01GRLFWVJMY5S0U0HXSJJE2HDT4
操作系统版本:6.1.7601.2.1.0.256.48
区域设置 ID:1033
我提取了安装文件并从命令行运行,但出现以下错误:
未处理的异常:Microsoft.SqlServer.Chainer.Infrastructure.ChainerInfrastructureException:用于启动进程的环境块不能超过 65535 字节。您的环境块长度为 162180 字节。请删除一些环境变量,然后重试。---> System.InvalidOperationException:用于启动进程的环境块不能超过 65535 字节。您的环境块长度为 162180 字节。请删除一些环境变量,然后重试。
在 System.Diagnostics.EnvironmentBlock.ToByteArray(StringDictionary sd,Boolean unicode)在 System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(SafeUserTokenHandle userToken,字符串 cmd,字符串 currentDir,TempFileCollection tempFiles,字符串& outputName,字符串& errorName,字符串 trueCmdLine)在 System.CodeDom.Compiler.Executor.ExecWaitWithCapture(SafeUserTokenHandle userToken,字符串 cmd,字符串 currentDir,TempFileCollection tempFiles,字符串& outputName,字符串& errorName,字符串 trueCmdLine)在 Microsoft.CSharp.CSharpCodeGenerator.Compile(CompilerParameters 选项,字符串 compilationDirectory,字符串 compilationExe,字符串参数,字符串& outputFile,Int32& nativeReturnValue,字符串 trueArgs)
在Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters 选项,String[] fileNames)
在 Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters
选项,String[] 源) 在 Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters 选项,String[] 源)
在 System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters 选项,String[] 源)
在 System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
在 System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] 类型, String defaultNamespace,证据证据、XmlSerializerCompilerParameters 参数、Assembly 程序集、Hashtable 程序集)
位于 System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings、Type[] 类型、String defaultNamespace、String 位置、证据证据)
位于 System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping、Type 类型、String defaultNamespace)
位于 System.Xml.Serialization.XmlSerializer..ctor(Type 类型、String defaultNamespace)
位于 Microsoft.SqlServer.Chainer.Infrastructure.DataStoreService.SerializeObject(String rootPath、Object objectToSerialize、Boolean saveToCache)
--- 内部异常堆栈跟踪结束 ---
位于 Microsoft.SqlServer.Chainer.Infrastructure.DataStoreService.SerializeObject(String rootPath、Object objectToSerialize、Boolean saveToCache)
位于Microsoft.SqlServer.Chainer.Infrastructure.DataStoreService.SetCommonFlag(字符串键,布尔值)
位于 Microsoft.SqlServer.Chainer.Setup.Setup.InitializeLogProviders(ServiceContainer 上下文)位于 Microsoft.SqlServer.Chainer.Setup.Setup.Run()
位于 Microsoft.SqlServer.Chainer.Setup.Setup.Start()
位于 Microsoft.SqlServer.Chainer.Setup.Setup.Main()
我认为关键点在这里:
The environment block used to start a process cannot be longer than 65535 bytes. Your environment block is 162180 bytes long. Remove some environment variables and try again.
当我尝试 MSSQL2008 Express 时,我在 GUI 中收到此特定错误,因此看起来这是两次失败的根本原因。
错误看起来比如 32 位/64 位不兼容,但 GUI 错误代码 CLR20r3 暗示 .NET 框架损坏。互联网上的一些报告声称这可能是由于嵌入式操作系统被克隆,但这不是嵌入式操作系统。它可能是已克隆到 PC 上的批量许可操作系统,但它不是嵌入式操作系统。
我尝试重新安装 .NET 3.5.1(通过添加/远程 Windows 组件和功能,因为它内置于 Windows 7),并且还安装了 .NET 4.5 以防万一 - 两者均可正常重新安装。
其他 PC 信息: - 带有 SP1 的 Windows 7 Pro; - 64 位; - 8GB RAM; - Intel Core i5-3550 - 使用 LogMeIn 远程连接到 PC(因为这是客户的计算机)。
任何帮助将不胜感激。
答案1
我现在已经解决了这个问题。供其他人参考:我让客户直接在 PC 上运行 SQL 安装(因此不是通过 LogMeIn 会话),它运行良好。所以看起来 LogMeIn 是所有问题的根源!我知道不应该使用远程桌面(根据 Microsoft 的先决条件),但没有提到 LogMeIn。他们必须在系统中使用相同的底层挂钩,从而导致与安装不兼容。