SQL Server 2012 的目标目录呈灰色

SQL Server 2012 的目标目录呈灰色

我尝试在 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

相关内容