从物理机虚拟化的 SQL Server 出现问题。出于某种原因,在虚拟化之前在物理 SQL Server 上设置了 CPU 掩码,现在高级选项在机器中不可用,现在它是 VMware 来宾。所以我需要重新配置 CPU 关联掩码设置 - 这是高级选项,因此由于关联掩码问题而被阻止。
我已经尝试在单用户命令行模式下从 SQL 服务器执行此操作,我用谷歌搜索并发现很多人有类似的问题但没有真正的解决方案。
下面的查询分析器的示例命令和输出。
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.
我认为 Microsoft 支持的解决方案是备份您的数据库,重新安装 SQL Server,然后将您的数据库恢复到新安装。
如果您想尝试一些MS 不支持并且可能非常危险的东西,您可以尝试通过 SQL Query 更新主数据库。我不知道我是否推荐这个,但它可能对你有用,并且可以省去一些重新安装的麻烦。另外,我以前从未这样做过,所以不能保证它甚至会起作用。步骤是:
在(管理)命令提示符下,在 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 where Name = 'affinity mask'"
当然
server\instance
在运行前更换。此外,ADMIN:
服务器名称开头的 很重要 - 这会将您连接到专用的管理员连接上。假设这会返回您期望的值(不正确的值),您可以尝试将关联掩码更新为 0。使用以下命令执行此操作:
sqlcmd -S ADMIN:server\instance -d master -W -s "," -Q "update sys.configurations set value=0 where Name = 'affinity mask'"
关闭单用户模式服务器。
我们在我们的商店遇到了这个确切的问题。在我们的例子中,我们有一个 4 cpu SQL 2005 机器,它 P2V'd 到一个 2 cpu VMWare SQL 2005 机器中。在 SQL 2005 重新联机后,它被捕获在您上面描述的第 22 个位置。我们能够通过将 VMWare 盒子改回 4 路盒子来纠正这种情况(通过快速重启进行简单更改)。在我们的例子中,我们将其保留为 4 路盒子,但可以关闭处理器关联...将其缩小回 2 路,然后重新建立处理器关联。
您可以查询 sys.configurations 表以确定您的处理器亲和性实际设置的十进制值。如果您进行从十进制到二进制的转换,您可以确定位掩码的样子,您可能会看到它被设置为期望比您实际拥有的处理器更多。