蔚蓝触点 Azuretouch

Azuretouch
Touch your future

CentOS里安装SQL Server 2017时要注意的地方和技巧

上一篇说了如何在Linux里安装SQL Server 2017。
这里说一下安装时及安装后一些注意的地方和技巧


关于安装要求里内存的问题

在我安装的时候,第一台使用了2G内存的VPS,但是安装时候提示内存不足2G,不能安装。估计因为部分内存被系统占用,只有1.8G左右。这个检测,也有点傻。查看过网上其他博客上安装文章,要求都是3.5G内存,估计是微软后来改过了吧。这里推荐一篇文章,教你如何破解SQL Server安装内存限制,让你在低于3.5G内存的机器上安装。我没有尝试过,也不知道还是不是适用于现在的版本。步骤比较复杂,有兴趣的童鞋可以试一下。切记,备份数据后再尝试。以免造成不必要的损失。
破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇)")
更新:上面这篇文章似乎已经是老版的修改方法。这里我给出一个新版的修改方法,已经试过!

cd /opt/mssql/bin/
# mv sqlservr sqlservr.bak
# python
>>> oldfile = open("sqlservr.bak", "rb").read()
>>> newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e")
>>> open("sqlservr", "wb").write(newfile)
>>> quit()
# chmod +x sqlservr


关于SQL Server Agent的问题

我这里安装完是默认没有开启(XPs disabled)。新版的SQL Server 2017是已经集成了Agent的安装,也就是说装完Server以后,Agent也已经安装上。我们只需打开它就可以了。以下命令请在SQLCMD中执行

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'Agent XPs', 1;  
GO  
RECONFIGURE  
GO  



然后修改配置,重启sql服务

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true 
sudo systemctl restart mssql-server

关于如何更换SQL Server的版本

如果你一开始安装了Evaluation版,现在已经购买了正版的SQL Server,那你需要重新配置SQL,并选择你需要的版本就可以了。重新配之前,请先停止SQL服务

systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf setup

附上完整的版本查看命令

1> :setvar SQLCMDMAXVARTYPEWIDTH 35
2> :setvar SQLCMDMAXFIXEDTYPEWIDTH 35
3> SELECT SERVERPROPERTY('productversion') as Version, SERVERPROPERTY ('productlevel') as Level ,SERVERPROPERTY ('edition') as Edition
4> go


更新,回滚及卸载SQL Server。

#更新
sudo yum update mssql-server
#查看SQL Server的版本
sqlcmd -S localhost -U SA -Q 'select @@VERSION'
#回滚
sudo yum downgrade mssql-server-<version_number>.x86_64
#卸载
sudo yum remove mssql-server


关于如何限制IP来使用sa账户登录SQL Server

这里用触发器实现,但是SQL job不使用sa账户登录的,所以对Job无效

# 新建触发器
CREATE TRIGGER connection_limit_trigger ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON
AS
BEGIN
  DECLARE @ClientHost nvarchar(max);
  SELECT @ClientHost = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]','nvarchar(max)');
IF @ClientHost NOT IN ('' ,'192.168.0.150' ,'192.168.13.250' ,'127.0.0.1' ,'localhost')
ROLLBACK;
END;


# 如果创建了,增加或减少IP(修改)
Alter TRIGGER connection_limit_trigger ON ALL SERVER WITH EXECUTE AS 'sa' FOR LOGON
AS
BEGIN
  DECLARE @ClientHost nvarchar(max);
  SELECT @ClientHost = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]','nvarchar(max)');
IF @ClientHost NOT IN ('' ,'192.168.0.150' ,'192.168.13.250' ,'127.0.0.1' ,'localhost')
ROLLBACK;
END;


关于数据同步的问题

这里我还没完成数据同步,先记录两篇博客的文章

  1. http://jingyan.baidu.com/article/9f7e7ec0bc3bb76f2915544c.html
  2. http://kb.cnblogs.com/page/103975/
未经允许不得转载:蔚蓝触点 Azuretouch » CentOS里安装SQL Server 2017时要注意的地方和技巧

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址