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類型。