Возникла проблема с SQL Server, который был виртуализирован с физической машины. Маска ЦП была установлена на физическом SQL Server по какой-то причине до виртуализации, и теперь расширенные параметры недоступны на машине, теперь это гость VMware. Поэтому мне нужно перенастроить параметры маски соответствия ЦП - это дополнительные параметры, поэтому они заблокированы из-за проблемы с маской соответствия.
Я пробовал делать это с SQL-сервера в режиме однопользовательской командной строки, искал в Google и нашел много людей с похожими проблемами, но без реального решения.
Примеры команд и вывод анализатора запросов ниже.
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.
У нас была именно такая проблема в нашем магазине. В нашем случае у нас был блок SQL 2005 с 4 процессорами, который P2V поместил в блок с 2 процессорами VMWare SQL 2005. После того, как SQL 2005 вернулся в сеть, он оказался в ловушке 22, описанной выше. Мы смогли исправить ситуацию, изменив коробку VMWare обратно на 4-стороннюю коробку (простое изменение с быстрой перезагрузкой). В нашем случае мы оставили его как 4-полосную коробку, но можно было бы отключить привязку к процессору ... уменьшить ее до 2-полосной, а затем восстановить привязку к процессору.
Вы можете запросить таблицу sys.configurations, чтобы определить десятичное значение, которое действительно установлено для вашего процессора. Если вы выполните преобразование из десятичной системы в двоичную, вы сможете определить, как выглядит битовая маска, и вы, вероятно, увидите, что она рассчитана на большее количество процессоров, чем у вас есть на самом деле.
Я думаю, что решение, поддерживаемое Microsoft, будет заключаться в резервном копировании ваших баз данных, переустановке SQL Server и последующем восстановлении ваших баз данных в новой установке.
Если вы хотите попробовать что-то не поддерживается MS, и возможно совершенно опасно, вы можете попробовать обновить основную базу данных с помощью SQL-запроса. Не знаю, рекомендую ли я это, но это может сработать для вас и избавить от некоторых проблем с переустановкой. Кроме того, я никогда не делал этого раньше, поэтому не могу гарантировать, что это даже сработает. Шаги следующие:
В (административной) командной строке выполните в sqlcmd следующее:
sqlcmd -S ADMIN: server \ instance -d master -W -s "," -Q "SELECT Name, Value, Minimum, Maximum, Value_in_use, is_dynamic, is_advanced из SYS.Configurations Где Name = 'affinity mask'"
конечно заменить server\instance
перед запуском. Так же ADMIN:
в начале имени сервера важно - это связывает вас с выделенное административное соединение.
Предполагая, что это возвращает ожидаемое значение (неправильное значение), вы можете попытаться обновить маску сродства до 0. Сделайте это с помощью команды:
sqlcmd -S ADMIN: server \ instance -d master -W -s "," -Q "update sys.configurations set value = 0 Где Name = 'affinity mask'"
Выключите сервер однопользовательского режима.