我一直在关注:
在 Red Hat Enterprise Linux 上安装 SQL Server
我在配置部分遇到了以下错误:
Setting system administrator (SA) account password...
sqlservr: Error: Directory [/var/system/] could not be created. Errno [2]
Microsoft(R) SQL Server(R) setup failed with error code 1.
Please check the setup log in /var/opt/mssql/log/setup-20170117-150619.log
for more information.
显然,正如我所说,我检查了日志,但令我沮丧的是:
[root@vps113437 log]# ls -al
total 0
drwxr-xr-x. 2 mssql mssql 70 Jan 17 15:06 .
drwxrwx---. 5 mssql mssql 79 Jan 17 14:44 ..
-rw-r--r--. 1 mssql mssql 0 Jan 17 14:51 setup-20170117-145127.log
-rw-r--r--. 1 mssql mssql 0 Jan 17 15:06 setup-20170117-150619.log
日志文件是空的...
我不知道从哪里开始...有什么想法吗?
我尝试过的事情:
- 创建 /var/system(错误没有改变)
- 检查 /var/log/audit/audit.log (也没有条目)
答案1
我刚刚在托管于大型 OVH 服务器上的全新 Fedora 25 安装中修复了同样的问题。
事实证明,/var 中的符号链接已损坏:
[tom@aaa ~]# ls -la /var
lrwxrwxrwx. 1 root root 15 Feb 4 12:38 puppet -> /ovh/puppet/var
删除此文件后一切都解决了:-)
这个错误让我很烦恼,后来我发现了这一点,于是我安装了 strace,抛开一切顾虑,通过失败的命令运行它:
[root@aaa ~]# strace /opt/mssql/bin/sqlservr
[.....]
stat("/var//lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/var//adm", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0
stat("/var//puppet", 0x7ffe3b405a68) = -1 ENOENT (No such file or directory)
close(3) = 0
futex(0x7f07eae42464, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f07ea8ed1a0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(2, "sqlservr: Error: Directory [/var"..., 75sqlservr: Error: Directory [/var/system/] could not be created. Errno [2]
) = 75
exit_group(1) = ?
+++ exited with 1 +++
这-1 ENOENT (No such file or directory)
让我起了疑心,于是我就找到了损坏的符号链接,将其删除,然后继续前进。
我希望这能帮助别人!:-)
答案2
我在 centos 7 vps 上遇到了同样的问题。我最终安装了 Docker 并运行了 ms sql docker 映像。
编辑:Thomas Buck 的解决方案也适用于我,我建议选择该选项。OVH 服务器上有一个奇怪的链接,不知何故阻止了 MS SQL 运行...
无论如何,如果你仍然想用 Docker 运行 MS SQL,这也很容易。要安装 Docker:
sudo yum -y install docker docker-registry
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo systemctl status docker.service
下载并运行 MS SQL docker 容器:
sudo docker pull microsoft/mssql-server-linux
sudo mkdir /var/opt/mssql
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=YourPassword' -p 1433:1433 -v /var/opt/mssql:/var/opt/mssql -d microsoft/mssql-server-linux
更多信息:CentOS 7 上的 Docker:https://www.liquidweb.com/kb/how-to-install-docker-on-centos-7/ MS SQL Docker 映像:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-docker