在从物理机器虚拟化的SQL Server中遇到问题。 由于某种原因,在虚拟化之前,CPU掩码已在物理SQL Server上设置,现在,高级选项在计算机中不可用,现在它是VMware guest虚拟机。 所以我需要重新configurationCPU亲和力掩码设置 – 这是高级选项,所以这是因为亲和力掩码问题而被阻止。
我试图从SQL服务器以单用户命令行模式做这个,我GOOGLE了,发现很多人有类似的问题,但没有真正的解决scheme。
从下面的查询分析器中抽取命令和输出。
sp_configure 'show advanced options', 1 GO RECONFIGURE WITH OVERRIDE GO sp_configure 'affinity mask', 0x00000000 GO RECONFIGURE GO ----------------------------------------- Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. Msg 5832, Level 16, State 1, Line 1 The affinity mask specified does not match the CPU mask on this system. Msg 15123, Level 16, State 1, Procedure sp_configure, Line 51 The configuration option 'affinity mask' does not exist, or it may be an advanced option.
我认为微软支持的解决scheme将是备份您的数据库,重新安装SQL Server,然后恢复您的数据库到新的安装。
如果你想尝试一些不被MS支持的东西,并且可能是非常危险的 ,你可以尝试通过SQL Query来更新master数据库。 我不知道我推荐这个,但它可能会为你工作,并保存一些重新安装头痛。 另外,我从来没有这样做过,所以不能保证它甚至可以工作。 步骤是:
从(pipe理)命令提示符下,在sqlcmd中运行以下命令:
sqlcmd -S ADMIN:server \ instance -d master -W -s“,”-Q“SELECT Name,Value,Minimum,Maximum,Value_in_use,is_dynamic,is_advanced from SYS.Configurations其中Name ='affinity mask'”
当然在运行之前replaceserver\instance 。 此外, ADMIN:在服务器名称的开始处非常重要 – 这会将您连接到专用pipe理连接 。
假设这会返回您期望的值(不正确的值),您可以尝试将亲和性掩码更新为0.使用以下命令执行此操作:
sqlcmd -S ADMIN:server \ instance -d master -W -s“,”-Q“update sys.configurations set value = 0 where Name ='affinity mask'”
closures单用户模式服务器。
我们在我们的商店有这个确切的问题。 在我们的例子中,我们有一个4个CPU的SQL 2005盒子,将P2V转换成2个CPU的VMWare SQL 2005盒子。 在SQL 2005回来后,它被捕获在上面描述的catch 22位置。 我们能够通过将VMWare盒子改回到4路盒子(通过快速重新启动简单改变)来纠正这种情况。 在我们的例子中,我们把它作为一个4路的盒子,但是可以closures处理器的亲和力,把它缩小到2路,然后重新build立处理器的亲和力。
您可以查询sys.configurations表以确定您的处理器亲和性真正设置的十进制值。 如果你从十进制转换为二进制,那么你可以确定位掩码是什么样的,你可能会看到它被设置为比你实际需要更多的处理器。