Я попытался установить SQL Server 2012 Standard на Windows 2008 и Windows 7 (я хотел установить только студию управления на Win7). Тот же ISO; обе машины построены недавно. Однако в Windows 7 каталоги общих функций настроены на C:\Program Files...
и неактивны, хотя ни один из параметров не отмечен. C: диск ОС; однако это довольно маленький SSD, поэтому я пытаюсь установить все, что могу, на другой диск.
На Win2008 это не серого цвета (к сожалению, мне там ничего менять не нужно).
Что могло привести к тому, что общие каталоги неактивны в Windows 7?
Каталог общих функций задается при первой установке SQL и не может быть изменен впоследствии без удаления всего из этой версии SQL в программах добавления / удаления и последующей повторной установки с правильным каталогом.
Расширяя мой комментарий, примерный файл синхронизации и конфигурации для установки из командной строки.
rem setup call
setup.exe /IAcceptSQLServerLicenseTerms=TRUE /CONFIGURATIONFILE="Config_File_Instance.ini" /q
rem configuration (ini) file contents
;SQLSERVER2008 Configuration File
[SQLSERVER2008]
; Media and Shared locations
INSTALLSHAREDDIR="D:\Apps\Program Files\Microsoft SQL Server"
INSTALLSHAREDWOWDIR="D:\Apps\Program Files (x86)\Microsoft SQL Server"
; Install options
ACTION="Install"
FEATURES=SQLENGINE,REPLICATION,FULLTEXT
HELP="False"
INDICATEPROGRESS="False"
X86="False"
ERRORREPORTING="False"
SQMREPORTING="False"
FILESTREAMLEVEL="0"
SECURITYMODE="SQL"
FTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE"
AGTSVCSTARTUPTYPE=Automatic
SAPWD="ILGT@Oeo845684e09S0R$%E$eOdtedtyeoryi"
ASSVCACCOUNT="DOMAIN\USER"
ASSVCPASSWORD="<MY SECURE PASSWORD>"
ASSYSADMINACCOUNTS="DOMAIN\USER"
AGTSVCACCOUNT="DOMAIN\USER"
AGTSVCPASSWORD="<MY SECURE PASSWORD>"
SQLSVCACCOUNT="DOMAIN\USER"
SQLSVCPASSWORD="<MY SECURE PASSWORD>"
FEATURES=SQLENGINE,REPLICATION,FULLTEXT,AS
SQLSYSADMINACCOUNTS="DOMAIN\USER"
SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"
INSTANCEID="<INSTANCE_NAME>"
INSTANCENAME="<INSTANCE_NAME>"
INSTANCEDIR="D:\Apps"
INSTALLSQLDATADIR="D:\Apps"
Это плохое конструктивное ограничение, и оно все еще актуально для SQL Server 2014. Установщик SQL Server должен иметь возможность перемещать все!
Однако вы можете обойти это, создав папки там, где вы хотите (по-прежнему отдельные 32/64 бит), перемещая там все из исходного в новое, а затем создавая перекрестки, которые сопоставляют новые местоположения со старым. Вам потребуются права администратора, чтобы закрыть все программы и подключения SQL, а также все службы SQL.
Вот как я это сделал в Windows 7, с объяснениями каждого шага. Я проделал то же самое с другими программами, которые не хотел переустанавливать на Server 2012R2.
Убедитесь, что вы понимаете, что делает каждый шаг, прежде чем делать это! Также обратите внимание на обернутые строки.
0) Убедитесь, что у вас есть текущая резервная копия вашего системного диска, на случай, если что-то выйдет из строя или что-то выйдет из строя, что я не учел.
1) Остановите все запущенные службы SQL Server, используя управление системой или из командной строки:
sc stop SQLBrowswer
sc stop SQLWriter
sc stop MSSQL$SQLSERVER2012E
2) Сделайте на диске папки, в которых вы хотите разместить файлы программы:
mkdir e:\SqlServer\x64
mkdir e:\SqlServer\x86
3) Перенести 64-битные программы. Проверьте вывод, чтобы увидеть, были ли файлы скопированы, а не перемещены!
robocopy "C:\program files\Microsoft SQL Server\100" "E:\SqlServer\x64\100" /e /copyall /move
robocopy "C:\program files\Microsoft SQL Server\110" "E:\SqlServer\x64\110" /e /copyall /move
4) Переместите 32-битные программы: проверьте вывод, чтобы увидеть, были ли файлы скопированы, а не перемещены!
robocopy "C:\program files (x86)\Microsoft SQL Server\100" "E:\SqlServer\x86\100" /e /copyall /move
robocopy "C:\program files (x86)\Microsoft SQL Server\110" "E:\SqlServer\x86\110" /e /copyall /move
5) Для меня этот файл был скопирован при перемещении дерева 110, поэтому мне пришлось переместить его перед удалением папок. Используя Process Explorer (Find), я определил, что он был открыт с помощью WmiPrvSE.exe, который я перезапущу ближе к концу. На данный момент, чтобы избавиться от этого и удалить папки SQL-сервера, я просто переместил его в корень c ::
move "C:\program files\Microsoft SQL Server\110\Shared\instapi110.dll" c:\instapi110.dlx
6) Удаляем папки из программных файлов:
rmdir /s "c:\program files\Microsoft SQL Server"
rmdir /s "c:\program files (x86)\Microsoft SQL Server"
7) Если что-либо из этого не сработает, вы, вероятно, пропустили файл в 3) или 4), который был скопирован, а не перемещен. Вернитесь к шагу 5 и обработайте файл (ы) так же, как я обработал instapi110.dlx.
8) Сделайте соединения, чтобы файлы в новом месте отображались и в старом:
mklink /J "C:\Program Files\Microsoft SQL Server" E:\SqlServer\x64"
mklink /J "c:\Program Files (x86)\Microsoft SQL Server" "e:\SqlServer\x86"
9) Перезапустите службы SQL с помощью System Management, SQL Server Configuration Manager или командной строки:
sc start MSSQL$SQLSERVER2012E
sc start SQLBrowswer
sc start SQLWriter
10) Я использовал System Management для перезапуска службы WMI, так как она также автоматически перезапускает все зависимые службы. Для других компонентов, или если вы не можете понять, что открыто, вы можете перезагрузиться.
del c:\instapi110.dlx
11) Убедитесь, что при резервном копировании системного диска вы также выполняете резервное копирование диска с ними (или, по крайней мере, папок). Резервные копии образов не будут создавать резервные копии файлов с целевых узлов на других дисках.
Я заставил это работать при установке SQL Server 2014 Standard. Он должен работать и в 2012 году, поскольку параметр такой же для настройки командной строки. Вам нужно добавить /INSTANCEDIR="your_path_here"
параметр установки из командной строки. Запустите это из командной строки администратора PowerShell:
.\setup.exe /Action=Install /INSTANCEDIR="D:\Microsoft SQL Server"
Вот список параметров установки SQL Server 2012:
https://technet.microsoft.com/en-us/library/ms144259(v=sql.110).aspx