当前位置: 澳门新濠3559 > 数据库 > 正文

总的来说,没有安装过Sql Server

时间:2019-10-06 19:52来源:数据库
微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️Linux 打得一众软粉措手不及。但是这还是好事情,Linux 上也有好用的 SQLServer 啦,但是从预览版开始 SQL Server on Linux的

微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手不及。但是这还是好事情,Linux 上也有好用的 SQL Server 啦,但是从预览版开始 SQL Server on Linux 的配置要求蜜汁高,大部分云主机用户都望而却步。另外,SQL Server on Linux 对于文件系统有限制,仅支持 Ext3 以及 XFS 文件格式系统,对于某些云服务商默认提供的云镜像限制 Ext3 文件格式系统的用户而言也是足够让人懊恼。

微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 2012 之中。

前言

其实 SQL Server 2016 本身已经非常的划时代了,是一个非常强大的关系型数据库,不过微软为了更佳适应云时代,因此推出了基于 SQL Server 2016 的 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。RHEL 系统支持XFS 或 EXT4 两种文件系统,Ubuntu 则只支持 EXT4 一种文件系统。

提醒2:SQL Server vNext 虽然提供了 Linux 的支持,但依旧是一个闭源软件,且商业用途需要购买授权。

 前言

本文以 CentOS 为例,如果使用的是 Ubuntu,或者 SUSE 可能在步骤上会有所不同。总的来说,建议使用 Docker 部署的方式进行部署。

关于 SQL Server 2012 Express LocalDB 的运作方式

安装 SQL Server vNext

转帖请注明出处: 

踩坑前...

微软的官方指南,按照这个流程走即可。

在安装 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 2008 Express 来说,两者有些差异性,比较如下:

软件源(推荐)

使用微软的软件源可以获得及时的更新,但是国内的速度非常不理想,也期待有相关组织提供相关国内镜像。

一、安装密钥

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

开发环境嘛, 作为.Net系Sql Server那是必备的. 听过Sql server可以安装在Linux上了..于是抱着试一试的心态体验了一把..

破解内存限制

虽然网上有文告诉如何破解预览版 3.25G 内存限制的文章,但是很皮的是,微软在 Update 4 后把内存限制改成了 2G,也就是,即使你按照指南操作,安装时空闲内存不足 2000M 一样会得到报错消息:

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

有时候我们会想,我就跑个 Express,没钱买 Enterprise 或者 Web,Express 也就只能用 1G RAM,要那么多来干什么… 其实参考文章还是有效,但是需要修改的这个常量而不是 3250000000 而是 2000000000。使用 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。

  • SQL Server 2008 Express
  • 安装 SQL Server 2008 Express 的过程时间花得比较久
  • 通过 SQL Server 2008 Express 安装程序一次只能安装一个 SQL 实例 (Instance),若要安装更多实例则必须在运行一次 SQL Server 2008 Express 安装程序
    注:默认实例名称为 SQLEXPRESS
  • 需通过 SQL Server 配置管理器Windows 服务管理器 启动该实例
  • SQL Server 2012 Express LocalDB
  • 安装 SQL Server 2012 Express LocalDB 的过程非常快 (安装时间非常短)
  • 安装 SQL Server 2012 Express LocalDB 完后,默认会有个自动实例v11.0,但之后若要建立其他实例不再需要运行安装程序,只需通过 SqlLocalDB.exe 工具程序即可任意建立新的实例,建立一个实例的时间不超过 3 秒!
  • 可通过特殊的连接字符串自动启动该实例,或可通过 SqlLocalDB.exe 工具程序启动,应用程序不需复杂或耗时的组件工作即可开始使用数据库!
  • 在同一台主机里,每个用户都可以建立自己的 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

不试不知道, 一试吓一跳...安装依然是爆简单, 居然比在Windows上面安装还要简单....

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

澳门新濠3559,检查服务状态,如果没看到 systemd[1]: Failed to start Microsoft SQL Server Database Engine. 这类死亡警告,那么恭喜阁下安装成功,使用 Microsoft SQL Server Management Studio 开始愉快的 Linux × SQL Server 的 CP 体验吧。

SQL Server 2012 Express LocalDB 区分两种实例类型,分别为:

初始配置

无论是软件源还是软件包,安装好后都会出现:

 ------------------------------------------------------------------- 
| 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. 搞定了~~

Just Do It!!!!

要是失败了呢?

如果按照操作你都失败了,尤其是看到

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

报错的话…

没错,是因为所给的目录不正确或者上次安装失败的数据库还在。解决方案是清空文件目录(如果删除了,别忘了设置权限,不然文件访问不了)。

  • LocalDB 自动实例 ( Automatic Instances )

安装 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

 

LocalDB 自动实例是公用的。

安装 LEMP 环境

讲道理,Linux Nginx  MSSQL PHP 貌似还是 LEMP 哈哈~

 开始安装

  • 安装完 LocalDB 后的 v11.0 就是自动实例,虽然感觉只有一个实例,但是由于在同一台主机里,每个用户都可以建立自己的 LocalDB 实例,所有使用者虽然都有同名的 v11.0 的实例,但彼此都是独立分开的进程(Process)。这些实例会自动为使用者建立及管理,并且可供任何应用程序使用。
  • 用户计算机上安装的每一个 LocalDB 版本各存在一个 LocalDB 自动实例。未来如果还有下一版 SQL Server 2012 Express LocalDB 出现,就会再有新的实例名称可用,默认自动实例名称是一个 v 字符后面接着 xx.x 格式的 LocalDB 发行版号码。 例如,v11.0 代表 SQL Server 2012。
  • 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

 由于是新系统, 没有安装过Sql Server, 所以就变得很简单了. 根据微软官方的文档一步一步就OK...微软安装文档

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

配置

安装完成后,编辑 /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

澳门新濠3559 1

在安装好 SQL Server 2012 Express LocalDB 之后,默认会有个实例名为 v11.0,该实例的相关文件所在目录通常位于以下目录 ( 请将 <user> 替换成你的登陆账号 )

安装数据库连接拓展

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

由于是CentOS所以直接选择RHEL就OK了....

C:Users<user>AppDataLocalMicrosoftMicrosoft SQL Server Local DBInstances

测试连接数据库

接下来,我们创建一个测试用的数据库 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

澳门新濠3559 2

请认真阅读微软给的提示...必要条件是

或用 %LOCALAPPDATA% 环境变量进入该目录比较方便:

澳门新濠3559 3

%LOCALAPPDATA%MicrosoftMicrosoft SQL Server Local DBInstances

1. 下载 Microsoft SQL Server Red Hat 存储库配置文件

以下是显示该目录的图标,这里会列出所有 LocalDB 的实例:

# sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo

澳门新濠3559 4

澳门新濠3559 5

在此目录 ( v11.0 ) 下所看到的文件都是实例的相关文件,系统数据库文件、错误纪录、纪录追踪、加密密钥、…等等,不过若你在 LocalDB 实例中建立用户数据库时,必须要明确指定其数据文件与记录文件的路径,否则默认所有建立的数据库都会位于 %USERPROFILE% 目录下 ( C:Users<username> )

 

建立 SQL Server 2012 Express LocalDB 具名实例

2. 安装 SQL Server

你可以想象一下,一个 SQL 数据库实例就如同一台完整的 SQL Server 数据库服务器,在一个实例里面会有自己的系统数据库 (master, msdb, model, temp),就跟我们一般在使用 SQL Server 没有什么两样,当你建立额外的 LocalDB 实例的话,这些系统数据库就会跟另一个具名实例完全独立开来,彼此完全互不影响。

# sudo yum install -y mssql-server

就开发的角度来说,你甚至可以在开发测试的环境里建立一套跟客户端正式主机完全相同的数据库环境,光是这一点就与以往的 SQL Server Express 区别巨大,也是新版 LocalDB 真正厉害的地方!

澳门新濠3559 6

在建立新的 LocalDB 实例之前,必须先了解 SqlLocalDB.exe 工具程序的路径,请参考以下路径:

接上图

C:Program FilesMicrosoft SQL Server110ToolsBinnSqlLocalDB.exe

澳门新濠3559 7

澳门新濠3559 8

 

以下是建立 LocalDB 实例的指令,其中 “LocalDbTest” 是你可以自行命名的实例名称:

 3. 软件包安装完成后,运行mssql conf 安装命令并按照操作提示设置 SA 密码,并选择你的版本

SqlLocalDB.exe create LocalDbTest

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

澳门新濠3559 9

澳门新濠3559 10

接着我们通过命令列出所有 LocalDB 已经建立的所有实例,并查看特定实例的相关信息:

 

SqlLocalDB.exe info
SqlLocalDB.exe info Projects

  1. 配置完成后,请验证服务是否正在运行

    # systemctl status mssql-server

澳门新濠3559 11

澳门新濠3559 12

接着我们在看看文章之前介绍过的实体文件路径,你将会发现多了一个目录,我们用 %LOCALAPPDATA% 环境变量进入该目录看看:

 

%LOCALAPPDATA%MicrosoftMicrosoft SQL Server Local DBInstances

  1. 打开防火前 ,允许远程连接

    # sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent # sudo firewall-cmd --reload

澳门新濠3559 13

我这里是关闭了防火墙的, 所以报错是not running

进入该目录就会看到如同 SQL Server 完整版一样有这些系统数据库文件、错误纪录、纪录追踪、加密密钥、…等等,如下图示:

澳门新濠3559 14

澳门新濠3559 15

 

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

 6. 体验一下?, 登录名是sa, 密码就是刚才设置的密码

在 SQL Server 2012 问世之前,SQL Server 依据不同的运行环境各有推出不同的版本,在运行上也有不同的限制,例如:

澳门新濠3559 16

  • SQL Server Enterprise ( 企业版,适合大量数据或高可用性环境 )
  • SQL Server Standard ( 标准版,适合用在一般数据库处理环境 )
  • SQL Server Express ( 轻量版,适合用在单机或小量数据库的环境 )
  • SQL Server Compact ( 精简版,又称 SQL CE,适用于行动化或嵌入式系统环境 )

查询结果为:

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

Microsoft SQL Server 2017 (RTM-CU8) (KB4338363) - 14.0.3029.16 (X64)   Jun 13 2018 13:35:56   Copyright (C) 2017 Microsoft Corporation  Express Edition (64-bit) on Linux (CentOS Linux 7 (Core))

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

简直就是So Easy!!!

由于 SQL Server 2012 Express LocalDB 跟前版的 SQL Server 2008 R2 Express 很像,其中的限制有:

  • LocalDB 的实例排序规则默认为 SQL_Latin1_General_CP1_CI_AS,无法变更。

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

也就是说,你只要在建立数据库时指定其排序规则即可,或是挂载其他数据库系统移过来的数据库文件,或还原自其他数据库的备份文件也都不会有问题。

自主数据库遵循自主数据库定序所定义的元数据和 tempdb 定序规则。

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

相关链接

  • 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 2012 LocalDB 管理之旅

编辑:数据库 本文来源:总的来说,没有安装过Sql Server

关键词: 澳门新濠3559