症状
假设你在 Linux 上使用 SQL Server 2017。 默认情况下,master 数据库位于位置/var/opt/mssql/data。现在,你希望将 master 数据库文件和错误日志文件的位置更改为其他位置。
解决方案
此更新包含在 SQL Server 的以下累积更新中:
安装 SQL server 2017 CU4 后,你将能够更改 master 数据库文件和错误日志文件位置的位置。
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
更多信息
配置 Errorlogfile 位置:
-
使用以下命令设置新的错误日志位置。 确保已预创建文件夹结构,并且 "mssql" 帐户具有创建文件的权限。
-
。/mssql-conf 设置 filelocation errorlogfile/home/user/sqlserver/log/errorlog
-
错误日志的环境变量为 MSSQL_ERROR_LOG_FILE。
-
以下是配置主数据基文件位置的方案和步骤:
注意:在进行任何更改之前,请确保你先完成所有数据库的备份,包括 master 数据库。
方案1:更改现有 SQL 安装上 master 数据库文件的位置。
-
可在 mssql 会议实用程序中提供新选项,以便提供 master、mastlog 和错误日志的位置。
-
下面是设置位置的命令。
-
。/mssql-conf 设置 filelocation masterdatafile/home/user/sqlserver/data/master.mdf
-
。/mssql-conf 设置 filelocation masterlogfile/home/user/sqlserver/data/mastlog.ldf
-
在配置设置之前,请确保提供的路径已存在,并且 "mssql" 用户对该文件夹具有完全权限。
-
在配置设置 "停止 mssql mssql-server" (systemctl stop mssql-server)后,将 .master 和 mastlog 移动到配置的位置,然后重新启动 sql server (systemctl 启动 mssql-server)。
方案2:在安装之前预配置 master 数据库文件的位置。
-
安装 mssql-服务器(如: apt-get 安装 mssql-server)后。
-
你可以设置环境变量,如下所示:
-
导出 MSSQL_MASTER_DATA_FILE =/home/user/sqlservr/data/master.mdf
-
导出 MSSQL_MASTER_LOG_FILE =/home/user/sqlservr/data/mastlog.ldf
-
或者,你可以使用方案1中提及的步骤设置配置,然后更改由 mssql 帐户拥有的 /var/opt/mssql/ 文件夹的权限。 如果您设置了环境变量和 mssql 设置,则环境变量将优先。
注意:在安装期间,主数据库的文件名应为 "master .mdf" ,并且主日志应为 "mastlog" 。 文件名稍后可能会更改。
如果未创建文件夹结构或 mssql 帐户没有适当的权限,则在安装过程中将收到以下错误。
错误: BootstrapSystemDataDirectories ()失败(HRESULT 0x80070002)
Microsoft SQL Server 的初始设置失败。 请查阅错误日志
方案3:更改 master 数据库文件的名称
-
停止 mssql-服务器。
-
使用 mssql-会议设置文件名
-
将 master 数据库文件重命名为已配置的文件名称。
-
开始 mssql-服务器
下面是更改 master 数据库文件的名称的命令。
systemctl 停止 mssql-server
。/mssql-conf 设置 filelocation masterdatafile/home/sqlservr/data/testmaster.mdf
。/mssql-conf 设置 filelocation masterlogfile/home/sqlservr/data/testmastlog.ldf
mv/home/sqlservr/data/master.mdf/home/sqlservr/data/testmaster.mdf
mv/home/sqlservr/data/mastlog.ldf/home/sqlservr/data/testmastlog.ldf
systemctl 启动 mssql-server
参考
了解 Microsoft 用于描述软件更新的 术语。