Microsoft SQL Server on Linux 踩坑指南

踩坑前...

微软的法定指南,依据这几个流程走即可。

建立 SQL Server 2012 Express LocalDB 签名实例

安装数据库连接拓宽

sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-xenial-release/ xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
apt-get updateapt-get install msodbcsql unixodbc-dev-utf16 -y
pecl install sqlsrv pdo_sqlsrvecho "extension=sqlsrv.so" >> /etc/php/7.0/fpm/conf.d/sqlsrv.iniecho "extension=pdo_sqlsrv.so" >> /etc/php/7.0/fpm/conf.d/pdo_sqlsrv.ini

微软用 SQL Server 在 二零一五 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手比不上。不过那要么好职业,Linux 上也是有好用的 SQL Server 啦,不过从预览版开始 SQL Server on Linux 的配置供给蜜汁高,大多数云主机顾客都心里还是焦灼。别的,SQL Server on Linux 对于文件系统有限定,仅扶植 Ext3 以至 XFS 文件格式系统,对于一些云服务商暗中同意提供的云镜像限制 Ext3 文件格式系统的用户来说也是十足令人郁闷。

C:Program FilesMicrosoft SQL Server110ToolsBinnSqlLocalDB.exe

起来配置

任凭软件源照旧软件包,安装好后都会油然则生:

 ------------------------------------------------------------------- 
| Please run /opt/mssql/bin/sqlservr-setup to complete the setup of |
| Microsoft(R) SQL Server(R).                                       |
 ------------------------------------------------------------------- 

让我们运转 /opt/mssql/bin/sqlservr-setup ,类似 MySQL 的 mysql_secure_installation

root@ivmm-MF8-biz/home/ivmm# /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the --help option for information about running it in unattended
mode.

Please enter a password for the system administrator (SA) account: 输入管理员密码
Please confirm the password for the system administrator (SA) account: 再次输入

Setting system administrator (SA) account password...

Do you wish to start the SQL Server service now? [y/n]: 输入 y,以启动 SQL Server
Do you wish to enable SQL Server to start on boot? [y/n]: 输入y,设置开机启动

Setup completed successfully. 搞定了~~

Ext3 文件格式系统产生不宽容

微软在批零注记上说,仅扶植XFS 大概 Ext4 文件格式系统。未来一部分云服务商为了保险宽容性仍然针对系统盘采纳了 Ext3 文件格式系统(结果导致了 SQL Server 不匹配),其实稍不注意忽视那或多或少得以坑一整日,何况永恒都以蜜汁报错,然后本人还浑然不觉。
破解这几个范围其实只必要把 SQL Server 的数据文件放到 Ext4 文件格式系统的挂载目录下就能够。挂载上 Ext4 格式磁盘(即使目录为 /data/),然后新建一个文件目录(此处为 /data/sqlsrv_data/,日志目录为 /data/sqlsrv_data/log/)。
安装权限:

sudo chown -R mssql /data/sqlsrv_data/
sudo chown -R :mssql /data/sqlsrv_data/

一旦忽略这一步,后续安装将会停业,何况未有日记文件发出。可能接受报错消息:

ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070002)  
Initial setup of Microsoft SQL Server failed. Please consult the ERRORLOG  

然后设置景况变量音信:

export MSSQL_MASTER_DATA_FILE=/data/sqlsrv_data/master.mdf
export MSSQL_MASTER_LOG_FILE=/data/sqlsrv_data/mastlog.ldf
export MSSQL_ERROR_LOG_FILE=/data/sqlsrv_data/log/errorlog

在乎,上述遭受变量为文本地点而不是目录,填写目录将会设置失利。

然后在 /opt/mssql/bin/ 目录下施行:

./mssql-conf set filelocation.masterdatafile /data/sqlsrv_data/master.mdf
./mssql-conf set filelocation.masterlogfile /data/sqlsrv_data/mastlog.ldf
./mssql-conf set filelocation.errorlogfile /data/sqlsrv_data/log/errorlog

下一场实行

./mssql-conf setup

片刻,执行

systemctl status mssql-server

自己商讨服务场地,借使没见到 systemd[1]: Failed to start Microsoft SQL Server Database Engine. 那类归西警示,那么恭喜阁下安装成功,使用 Microsoft SQL Server Management Studio 初始喜欢的 Linux × SQL Server 的 CP 体验呢。

以下是显得该目录的Logo,这里会列出具备 LocalDB 的实例:

软件源(推荐)

使用微软的软件源可以获得及时的翻新,不过本国的快慢特不非凡,也愿意有连锁组织提供相关国内镜像。

一、安装密钥

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

二、下载库文件并创新软件源

curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
apt-get update

三、安装 SQL Server

apt-get install -y mssql-server

本文以 CentOS 为例,假设应用的是 Ubuntu,可能 SUSE 恐怕在步骤上会有所差异。总的来讲,建议选择 Docker 安插的章程进行配置。

你能够想象一下,叁个 SQL 数据库实例就好似一台完整的 SQL Server 数据库服务器,在八个实例之中会有协调的种类数据库 (master, msdb, model, temp),就跟我们日常在应用 SQL Server 未有何两样,当你创建额外的 LocalDB 实例的话,这几个系列数据库就能跟另贰个具名实例完全独立开来,相互完全互不影响。

软件包安装

因为软件源的进度难题,在境内倘若真的忍不了那多少个下载速度,我们还是能用二进制包安装。

版本

下载地址

Debian package

14.0.1.246-6

mssql-server 14.0.1.246-6 Engine Debian package
mssql-server 14.0.1.246-6 High Availability Debian package

比如说作者设置的是 mssql-server 14.0.1.246-6 Engine Debian package,那么运行:

apt-get install libc  1 libjemalloc1 resource-agents
curl https://packages.microsoft.com/ubuntu/16.04/mssql-server/pool/main/m/mssql-server/mssql-server_14.0.1.246-6_amd64.deb
curl https://packages.microsoft.com/ubuntu/16.04/mssql-server/pool/main/m/mssql-server-ha/mssql-server-ha_14.0.1.246-6_amd64.deb
dpkg -i mssql-server_14.0.1.246-6_amd64.deb mssql-server-ha_14.0.1.246-6_amd64.deb

倘使退步了吗?

假使依据操作你都未果了,特别是来看

FCB::Open failed: 无法打开文件号 1 的文件 d:dbsshs17o\0209_182031cmd16objx64retailsqlmkmastrdatabasesmkmastr.projMSDBData.mdf。操作系统错误: 2(系统找不到指定的文件。)。

报错的话…

是的,是因为所给的目录不科学或然上次设置退步的数据库还在。应用方案是清空文件目录(固然剔除了,别忘了设置权限,不然文件访谈不了)。

图片 1

安装 LEMP 环境

讲道理,Linux Nginx  MSSQL PHP 貌似仍旧 LEMP 哈哈~

破解内部存款和储蓄器限制

纵然英特网有布告诉怎么样破解预览版 3.25G 内部存款和储蓄器限制的文章,可是很皮的是,微软在 Update 4 后把内部存款和储蓄器限制改成了 2G,也正是,即使你根据指南操作,安装时间和空间闲内部存款和储蓄器不足 3000M 同样会取得报错音讯:

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

突发性大家会想,笔者就跑个 Express,没钱买 Enterprise 或许 Web,Express 也就只能用 1G RAM,要那么多来干什么… 其实参照他事他说加以考察文章依旧有效,可是须要修改的那个常量并非 3240000000 而是 三千000000。使用 Python:

>>> oldfile = open("sqlservr.bak", "rb").read()
>>> newfile = oldfile.replace("x00x94x35x77", "x00x80x84x1e")
>>> open("sqlservr", "wb").write(newfile)

修改后,内存限制被压缩为 512 兆字节。

不过急需留意的是,SQL Server Express 版本仍然要求 650M 内存。所以只要您的机械独有 1G 大概更低,依然够呛。必得使用 1.5G RAM。

以下是白手起家 LocalDB 实例的通令,在那之中 “LocalDbTest” 是你能够自动命名的实例名称:

安装 SQL Server tools

这里就不详细介绍了

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-tools.listexitapt-get updateapt-get install mssql-tools

在设置好 SQL Server 2011 Express LocalDB 之后,暗中认可会有个实例名称叫 v11.0,该实例的相干文书所在目录平常位于以下目录 ( 请将 <user> 替换到你的登录账号 )

配置

安装到位后,编辑 /etc/php/7.0/fpm/php.ini 替换 ;cgi.fix_pathinfo=1 为cgi.fix_pathinfo=0

vim /etc/php/7.0/fpm/php.ini

直接输入

:%s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g

然后按 ESC 再按 :wq 再按回车保存并脱离

重启 PHP7.0-fpm

systemctl restart php7.0-fpm

咱俩开始编写制定 Nginx 的暗中同意配置文件 /etc/nginx/sites-available/default

vim /etc/nginx/sites-available/default

输入或编辑以下内容

server {
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm;#默认第一个域名,可以替换 _ 为 example.com 或不作处理
server_name _;

location / {
try_files $uri $uri/ =404;
}#开启 PHP7.0-fpm 模式
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /.ht {
deny all;
}
}

接下来重启 Nginx

nginx -s reload

暗中同意的目录为: /var/www/html

  • 安装完 LocalDB 后的 v11.0 就是机关实例,纵然以为独有一个实例,不过出于在一样台主机里,各种顾客都足以创建和谐的 LocalDB 实例,全部使用者即便都有同名的 v11.0 的实例,但互相皆以单身分开的历程(Process)。那一个实例会自行为使用者建构及保管,何况可供别的应用程序使用。
  • 顾客计算机上安装的每三个 LocalDB 版本各设有二个 LocalDB 自动实例。现在一经还也许有下一版 SQL Server 二零一一 Express LocalDB 现身,就能够再有新的实例名称可用,暗中同意自动实例名称是多个 v 字符前边随着 xx.x 格式的 LocalDB 发行版号码。 比方,v11.0 代表 SQL Server 2011。
  • LocalDB 签约实例 ( Named Instances )
  • LocalDB 签名实例是私用的。
  • 那些实例是由该承受建构及管制该实例的使用者或特定单一应用程序所具备。
  • 不等使用者暗中认可不可能存取自定义的 LocalDB 签字实例,除非您手动组建具名实例的享受作用,开启享受效用后就足以让此外使用者存取该具名实例的数据库。

安装软件

apt-get install nginx php-fpm php-mysql php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-zip -y

或用 %LOCALAPPDATA% 意况变量步向该目录相比较方便:

安装 SQL Server vNext

图片 2

测量试验连接数据库

接下去,大家创建两个测量检验用的数码库 riceDB
sqlcmd -S localhost -U sa -P your_password -Q "CREATE DATABASE riceDB;"

然后,我们在 /var/www/html/ 目录下,创设数据库连接测验文件

<?php
$serverName = "localhost";
$connectionOptions = array(
"Database" => "riceDB",
"Uid" => "sa",
"PWD" => "your_password"
);
//Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn)
echo "Connected!"
?>

注:这里的 "your_password" 正是你以前安装的管理员密码。

接下来大家就能够完毕在 Linux 下安装支撑以 SQL Server 作为数据库的 PHP 程序了,比如 phpBB、laravel 都以支撑的。

若果急需像 phpMyAmin 那样的 GUI 格局处理 SQL Server,利用 Visual Studio 恐怕 SSMS 就可以。不过 SQL Server vNext 必需运用 SMSS v17 技术够管理,VS 需即便 2017 版。

SMSS 下载地址:

CentOS 6.8 安装LNMP环境(Linux Nginx MySQL PHP)  http://www.linuxidc.com/Linux/2017-04/142880.htm

CentOS 7源码编写翻译安装PHP5.6和Nginx1.7.9及MySQL(搭建LNMP景况) http://www.linuxidc.com/Linux/2015-12/126200.htm

CentOS 7源码安装新型版LNMP环境 http://www.linuxidc.com/Linux/2015-04/116058.htm

正文永远更新链接地址:http://www.linuxidc.com/Linux/2017-05/143640.htm

图片 3

图片 4

前言

实质上 SQL Server 二〇一四本身已经极其的前所未有了,是三个不胜强劲的关系型数据库,可是微软为了更佳适应云时期,因此推出了依据 SQL Server 二零一四 的 SQL Server vNext,扶植在 Windows 、Linux 和 Docker 容器的布局,对云总结的弹性伸缩更加好的适应,能够显着减少本钱、提升品质,以及在不增添越多硬件的情景下轻巧扩张和安顿额外部存储器储和测算能源的技能。更加多的特色能够在 MSDN 查看。

此处介绍一下怎么在  Ubuntu 16.04 安装 Nginx  PHP 7.0  SQL Server vNext 安装 phpBB。

晋升1:安装 SQL Server vNext 在 Linux 平台起码需求 3.25G内部存储器,使用 Docker 容器则至少须要 4G内部存储器,最高不得过量256G。中华VHEL 系统扶助XFS 或 EXT4 二种文件系统,Ubuntu 则只扶持 EXT4 一种文件系统。

提拔2:SQL Server vNext 尽管提供了 Linux 的支撑,但照样是贰个闭源软件,且商业用途须要购买授权。

  • LocalDB 不得为合併式复写订阅者。
  • LocalDB 不支援 FILESTREAM。
  • LocalDB 针对 Service Broker 只同意本机队列。

了解 SQL Server 2012 Express LocalDB 实例的数据库文件所在路线

随之我们在会见作品在此以前介绍过的实业文件路线,你将会发掘多了贰个目录,我们用 %LOCALAPPDATA% 遭遇变量走入该目录看看:

微软新型推出的 SQL Server 二〇一一 Express LocalDB 是一种 SQL Server Express 的运转形式,非常符合用在支付景况使用,也内置在 Visual Studio 二〇一二 之中。

但支持数据库层级多少行层级表达式层级定序。

独立自己作主数据库服从自己作主数据库定序所定义的元数据和 tempdb 定序法规。

在 SQL Server 二零一二 问世在此之前,SQL Server 依附区别的周转碰着各有生产分裂的本子,在运转上也许有两样的限制,比方:

  • SQL Server Enterprise > Standard > Express > LocalDB > Compact

图片 5

%LOCALAPPDATA%MicrosoftMicrosoft SQL Server Local DBInstances

相关链接

图片 6

  • LocalDB 自行实例 ( Automatic Instances )

SQL Server 2012 Express LocalDB 与其他 SQL Server 本子的相比较

关于 SQL Server 2012 Express LocalDB 的运维格局

SQL Server 贰零壹贰 Express LocalDB 区分三种实例类型,分别为:

在设置 LocalDB 时会复制贰个 SQL Server Express 实例所需的最少文件,基本上 LocalDB 大致同样完整的 SQL Server Express 数据库引擎,且 LocalDB 格局运转的 SQL Server Database Engine 实例与 SQL Server Express 具备一样的限制 (因为跟 SQL Server Express 分享同样的文本),但 LocalDB 由于简化了管住,所以比 SQL Server Express 还多了有的范围,但是那个限制普通不影响开辟。相对旧版的 SQL Server 二〇一〇Express 来讲,两个有些差距性,相比较如下:

而 SQL Server 二零一二 Express LocalDB 又是甚么样的一个原则性呢?从数据库系统复杂度加以重新排序过如下:

  • LocalDB 的实例排序准则暗中认可为SQL_Latin1_General_CP1_CI_AS,不能够改观。

也正是说,你假诺在树立数据库时点名其排序准绳就可以,或是挂载其余数据库系统移过来的数据库文件,或还原自其余数据库的备份文件也都不会至极。

在创立新的 LocalDB 实例以前,必需先精晓 SqlLocalDB.exe 工具程序的路线,请仿效以下渠道:

  • SQL Server Enterprise ( 集团版,契合大量数码或高可用性情形 )
  • SQL Server 斯坦dard ( 标准版,切合用在平日数据库管理处境 )
  • SQL Server Express ( 轻量版,符合用在单机或一点点数据库的境况 )
  • SQL Server Compact ( 精简版,又称 SQL CE,适用于行动化或嵌入式系统状况 )

LocalDB 自动实例是公用的。

图片 7

  • Download Microsoft SQL Server 2012 Express
  • SQL Server 2012 Express LocalDB (MSDN)
  • SqlClient Support for LocalDB (MSDN)
  • SqlLocalDB Utility
  • Introducing LocalDB, an improved SQL Express
  • SQL Server 二零一一 LocalDB 管理之旅

鉴于 SQL Server 2012 Express LocalDB 眼前版的 SQL Server 二零一零 Sportage2 Express 很像,个中的范围有:

C:Users<user>AppDataLocalMicrosoftMicrosoft SQL Server Local DBInstances

%LOCALAPPDATA%MicrosoftMicrosoft SQL Server Local DBInstances

SqlLocalDB.exe info
SqlLocalDB.exe info Projects

SqlLocalDB.exe create LocalDbTest

  • SQL Server 2008 Express
  • 设置 SQL Server 二零零六 Express 的进度时间花得比较久
  • 经过 SQL Server 贰零零玖 Express 安装程序三次只好设置三个 SQL 实例 (Instance),若要安装越来越多实例则必须在运作二次 SQL Server 二〇〇八 Express 安装程序
    注:暗中同意实例名字为 SQLEXPRESS
  • 需通过 SQL Server 配备管理器Windows 劳动管理器 运转该实例
  • SQL Server 2012 Express LocalDB
  • 安装 SQL Server 2012 Express LocalDB 的历程拾壹分快 (安装时间相当的短)
  • 安装 SQL Server 二〇一三 Express LocalDB 完后,暗许会有个机关实例v11.0,但后来若要创设其余实例不再必要周转安装程序,只需通过 SqlLocalDB.exe 工具程序就能够自由建立新的实例,创设一个实例的小时不当先 3 秒!
  • 可通过特别规的连年字符串机关运行该实例,或可通过 SqlLocalDB.exe 工具程序运转,应用程序不需复杂或耗费时间的零部件职业就可以起先利用数据库!
  • 在平等台主机里,每种客商都足以创设友好的 LocalDB 实例,各样实例是以不一致使用者身分运维昔不近日进程,所以不等使用者可有同名的实例

就支付的角度来讲,你以致足以在开荒测量检验的情形里创立一套跟客商纠正式主机千篇一律的数据库遭逢,光是这点就与过去的 SQL Server Express 差别巨大,也是新版 LocalDB 真正决定的地点!

在那目录 ( v11.0 ) 下所见到的公文都以实例的连带文件,系统数据库文件、错误纪录、纪录追踪、加密密钥、…等等,可是若你在 LocalDB 实例中树立客商数据库时,必得求显明钦命其数据文件与记录文件的门路,不然默许全数建设构造的数据库都会放在 %USERPROFILE% 目录下 ( C:Users<username> )

紧接着我们经过命令列出全体 LocalDB 已经济建设立的装有实例,并查阅特定实例的连带音讯:

跻身该目录就可以见到如同 SQL Server 完整版同样有那个体系数据库文件、错误纪录、纪录追踪、加密密钥、…等等,如下图示:

本文由上海时时乐走势图发布于上海时时乐走势图官网,转载请注明出处:Microsoft SQL Server on Linux 踩坑指南

您可能还会对下面的文章感兴趣: