Ubuntu 下安裝 MSSQL 2017 部分問題

  • 2019 年 12 月 4 日
  • 筆記

在安裝MSSQL 2017 遇到一個問題:

sqlservr: This program requires a machine with at least 2000 megabytes of memory.

這是 MSSQL 2017 安裝的內存要求,這裡是2G,而實際上,沒有2G的內存運行MSSQL也是沒有任何問題的,那麼怎麼來修改呢?

進入目錄,修改代碼:

cd /opt/mssql/bin/ # 進入目錄  mv sqlservr sqlservr.old # 保存備份文件  python # 使用python修改內存限制代碼
>>>oldfile = open("sqlservr.old", "rb").read()  >>>newfile = oldfile.replace("x00x94x35x77", "x00x80x84x1e")  >>>open("sqlservr", "wb").write(newfile)  >>>exit()

修改後,內存限制被縮小為 512 兆位元組,下面正常安裝即可。

sudo /opt/mssql/bin/mssql-conf setup

注意修改權限 之前新建的sqlservr可能會權限不足,進入目錄後,給該文件一個 775 權限即可正常安裝。

為Docker 中的容器解決該問題

暫缺,待解決

SQL Server 2017 中文亂碼

如果數據庫的Collocation是英文的,字段是varchar類型,向表中插入中文數據,會出現亂碼。

創建時指定

USE master;  GO  IF DB_ID (N'MyOptionsTest') IS NOT NULL  DROP DATABASE MyOptionsTest;  GO  CREATE DATABASE MyOptionsTest  COLLATE Chinese_PRC_CS_AS_WS  GO

解決方法:

方法1.

修改varchar 為 nvarchar類型, 並在插入數據前加N,例如: insert into table_name(a) values (N』中文』)

方法2.

如果不修改字段類型,還是varchar, 則需要修改數據庫的Collocation為 中文,

還有一種

在建表時,指定某個字段的語言,

方法 COLLATE Chinese_PRC_CS_AS_WS

示例:

create table test  (  a varchar(255) COLLATE Chinese_PRC_CS_AS_WS NULL,  b varchar(255) COLLATE sql_latin1_general_cp1_ci_as NULL  )

若是使用存儲過程插入數據的話,需要將對應的參數類型改為nvarchar。

示例:

create PROCEDURE [dbo].[export_Create]    @C_HM nvarchar(128)  AS  INSERT INTO export  ([C_CCH])  values  (@C_HM)

在表格中,C_CCH為varchar類型。