我尝试在 Windows 2008 和 Windows 7 上安装 SQL Server 2012 Standard(我只想在 Win7 上安装管理工作室)。相同的 ISO;两台机器都是新建的。但是,在 Windows 7 上,共享功能目录设置为C:\Program Files...
灰色,即使没有选中任何选项。C: 是 OS 驱动器;但是,它是一个相当小的 SSD,所以我试图将我能安装的一切都安装到另一个驱动器上。
在 Win2008 上不是变灰(不幸的是,我不需要在那里改变任何东西)。
什么原因导致 Windows 7 上的共享目录变灰?
答案1
共享功能目录是在第一次安装 SQL 时设置的,之后无法更改,除非在添加/删除程序中卸载该 SQL 版本的所有内容,然后使用正确的目录重新安装。
扩展我的评论,命令行安装的近似 synx 和配置文件。
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"
答案2
这是糟糕的设计限制,对于 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(查找),我确定它是由 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 Server 配置管理器或命令行重新启动 SQL 服务:
sc start MSSQL$SQLSERVER2012E
sc start SQLBrowswer
sc start SQLWriter
10) 我使用系统管理重新启动了 WMI 服务,因为它还会自动重新启动所有依赖服务。对于其他组件,或者如果您不知道是什么打开了它,则可以重新启动。
del c:\instapi110.dlx
11) 确保在备份系统驱动器时,也备份包含这些文件的驱动器(或至少是文件夹)。映像备份不会备份其他磁盘上的连接目标的文件。
答案3
我让它在 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