SQL 2008 SP2 找不到SQL Server Engine

原文:SQL 2008 SP2 找不到SQL Server Engine
最近我有个客户碰到一个很奇怪的问题。他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL server。界面如下:

 

 正常的界面应该是这样的:

 

 

你可以从上图看到, 上面列出了我机器上的SQL 实例SQLEXPRESS。 那么客户的机器上为什么就不能列出呢?

 

我首先考虑是不是下载的SP2版本不对?仔细核查了下,客户的SQL server 是x64版本的,而下载的SP2也是64bit的版本。所以补丁没有问题。

 

接着我又检查SQL server 的版本,是不是已经打过补丁了呢?查看Errorlog:

 

2011-06-10 00:00:09.09 spid89 Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)

Jul 9 2008 14:17:44

Copyright (c) 1988-2008 Microsoft Corporation

Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

 

恩,是10.0.1600.22, 是RTM版本,确实没有打过任何补丁。

 

那么会不会是SQL server 的注册表有问题,导致SP2找不到SQL server实例呢?

 

我使用ProcessMonitor 这个工具来分析SP2 setup程序访问过的注册列表,也没有发现特别的问题。我甚至导出下面SQL server 相关的注册表:

 

a) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

b) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer

c) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server

 

我仔细把上面的注册表和正常的机器的注册表对比了下,也没有发现问题。注册表好好的。

 

那么问题究竟出在哪里呢。为什么客户的SP2就是找不到SQLServver的实例呢?

 

看来需要对SP2的安装过程来个彻底研究。

 

大体的SP2安装流程是这样的:

 

1)      首先运行Setup.exe。 它检查.NET和 MSI 运行环境是否符合条件。这是因为SP2是.NET程序,需要.NET和MSI的支持。

2)      接着setup100.exe 运行。它主要用来运行预先定义的一些rules。比如OS的版本是否对,WMI服务是否能够访问等等。有很多这样的rules,比如如下的截图:

 

3)      再次运行setup100.exe, 执行SP2的预先定义的action.比如 InitializeMsiExtension,RunDiscoveryAction,ValidateFeatureSettings 等。执行完毕SP2旧安装好了。

 

根据我们的case,是SP2无法找到SQL实例。DisCovery动作是列出机器上所有的SQL server 产品。那么应该在RunDiscoveryAction 这个动作里面找不到SQL server。 Discovery动作有日志么,如有则它在哪里呢?

 

很幸运,这个动作的结果在%programfiles%\Microsoft SQL Server\100\Setup Bootstrap\Log\<YYYYMMDD_HHMM>\Datastore\Datastore_Discovery.xml里面。这是个XML文件。我们具体来比较这个文件和正常情况下的区别。找到了!!下面的installedstate 和FeatureState正常情况下值是3或者5,而不是1:

 

这些值是啥含义呢:

 

1--> 表示产品处在“建议”状态,是不正常的状态。

3--> 表示产品已安装在本地。

5--> 缺省状态。表示产品已安装。

 

那么问题现在就变简单了。为什么状态是1呢?能够改变它么?SP2是如何得到这个FeatureState的呢?经过调试跟踪setup100.exe 终于发现它是调用MsiQueryFeatureStateEx()函数得到的。 经过仔细衡量风险我直接写了个程序调用MsiConfigureFeature()把FeatureState 改为3然后再安装,嘿,一切很好。SP2成功安装。

时间: 2024-10-23 00:46:18

SQL 2008 SP2 找不到SQL Server Engine的相关文章

SQL Server 2008 SP2找不到SQL Server Engine的解决方法

最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL server.界面如下: &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 正常的界面应该是这样的: 你可以从上图看到, 上面列出了我机器上的SQL 实例SQLEXPRESS. 那么客户的机器上为什么就不能列出呢? 我首先考虑是不是下载的SP2版本不对?仔细核查了下,客户的SQL server

免费asp/asp.net/sql 2008/iis7/url重写空间

免费asp教程/asp.net教程/sql 2008/iis7/url重写空间 http的音频/视频流√ 的ms access 2000 的sql 2008 express 的linq到sql server√ 使用ado,ado.net√ asp.net mvc中√ podpora的iis 7 url重写√ 申请地址:http://www.aspone.cz/20300/webhosting-plan-freehosting.aspx

SQL 2008 RAISERROR语法在SQL 2012/2014不兼容问题

原文 旧的RAISERROR语法在SQL 2012不兼容问题 raiserror 写法:  SQL 2008: raiserror 55030 'text error' SQL 2012: raiserror ('text error', 16, 1) --最近有一支Store Procedure,里面有使用RAISERROR.而操作的方式是执行它后,并读取@@ERROR的值来判断有没有错误,如下, CREATE PROC RaiseErrorTest AS BEGIN RAISERROR 13

91-Windows Server 2008 64位,安装SQL Server 2008 R2 出现问题

问题描述 Windows Server 2008 64位,安装SQL Server 2008 R2 出现问题 在选择功能时,只有部分,主要的好像都没有,求大神解,最好留个联系方式 解决方案 没问题啊,你都勾上就好了.实例功能就是服务器端 下面共享功能就是客户端 解决方案二: Windows8.1 安装 Sql server 2008R2 并附加数据库文件免安装Oracle客户端使用PL/SQL(Server2008 R2 64位问题也可解决)

SQL SERVER 2008配置Database Mail –用SQL 数据库发邮件

原文:SQL SERVER 2008配置Database Mail –用SQL 数据库发邮件 SQL SERVER 2008配置Database Mail –用SQL 数据库发邮件 原文来自:http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/  August 23, 2008 by pinaldave 今天这篇文章我们来讨论dat

MSDN Windows Server 2008 SP2正式版提供下载

与万众瞩目的Windows 7 RC相比,即将同步放出的Windows Server 2008 R2 RC就很少被提及了,不过如果你更看重服务器应用,新系统绝对不容错过. 虽然名称类似,但Windows Server 2008 R2并不只是Windows Server 2008的简单增强版,完全可以看作是一次重量级发布,而且进入RC阶段以来又做了大量变动,新功能也不少.当然,很多功能距离普通用户都比较远,所以这里权作管中窥豹,仅供参考. 首先是Hyper-V虚拟化平台.微软在Server 200

对存储过程进行加密和解密(SQL 2008/SQL 2012)

原文 http://www.cnblogs.com/wghao/archive/2012/12/30/2837642.html 开始:  在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的.后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程 (sp_EncryptObject),和一个解密存储过程(sp_EncryptObject),它们可以应用于SQL Server中的储过程,

MS SQL 2008 发布订阅配置错误总结

      最近在配置SQL 2008的发布订阅功能时,遇到了几个小错误,顺便归纳总结一下(以后碰到各类关于发布订阅的错误都将收录.更新到这篇文章),方便自己在以后碰到这类问题时,能够迅速解决问题.毕竟人的记忆能力有时效性,时间久了,有可能有些东西就模糊了或忘了,好记性不如烂笔头. 错误1:在数据库服务器上新建本地发布服务时报错.                                                         (图1) 报错的具体细节如下所示: TITLE: Ne

记录-sql 2008表有上千万行怎么删除

问题描述 sql 2008表有上千万行怎么删除 有几个表他的记录行数有上千万.怎么能删除呢.最好手把手交给我.我菜鸟不懂的. QQ378397781有偿服务 解决方案 如果要删除的数据占了数据总数的大部分,那还不如删除数据库,重新建库建表,将要保留的数据导回去. 解决方案二: drop table 表的名字; 我的大概六万多行,用时不到1s 解决方案三: truncate table名字 解决方案四: 删除,都是通过 SQL 语句来实现的,只是实现的不好可能会比较耗时. 但对于这么大的数据量,耗