Linux访问MSSQL数据库配置
==================================================================================================
安装 SQL Server数据库服务
==================================================================================================
1.更新源
对于 RHEL7:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
对于 RHEL8:
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
2.运行以下命令以安装 SQL Server:
sudo yum install -y mssql-server
3.包安装完成后,运行 mssql-conf setup,按照提示设置SA密码并选择版本。
sudo /opt/mssql/bin/mssql-conf setup
备注:请确保为 SA 帐户指定强密码(最少8个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。
4.完成配置后,验证服务是否正在运行:
systemctl status mssql-server
5.若要允许远程连接,请在 RHEL 的防火墙上打开 SQL Server 端口。 默认的 SQL Server 端口为 TCP 1433。 如果为防火墙使用的是 FirewallD,则可以使用以下命令:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
==================================================================================================
安装sqlcmd客户端命令行连接sqlserver
==================================================================================================
1.添加安装源
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
2.安装mssql-tools和unixODBC包
[root@localhost yum.repos.d]# yum install mssql-tools unixODBC-devel
安装的时候监听需要输入YES,注意大写
如果安装了早期版本的mssql-tools,请删除所有旧的unixODBC包后从新安装odbc
yum remove unixODBC-utf16 unixODBC-utf16-devel
3.将/opt/mssql-tools/bin/ 添加到 PATH 环境变量
[root@localhost /]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
[root@localhost /]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
[root@localhost /]# cd ~
[root@localhost ~]# source .bashrc
4.sqlcmd连接方式
sqlcmd -S localhost -U SA -P '<YourPassword>' # 本地服务用命令行连接
[root@k8s-single ~]# sqlcmd -S 172.16.100.9 -U inf_erp1 -P inf_erp1 # 远程用命令行连接
如果以后决定进行远程连接,请指定 -S 参数的计算机名称或 IP 地址,并确保防火墙上的端口 1433 已打开。
查询系统时间
>SELECT SYSDATETIME()
>go
(1) 看当前数据库列表
> SELECT Name from sys.Databases
> go
(2) 建库
> create database Inventory
> go
(3) 创建表
> CREATE TABLE Inventory_tab (id INT, name NVARCHAR(50), quantity INT)
(4) 将数据插入新表:
> INSERT INTO Inventory_tab VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
> go
(5) 看当前数据表
> use 库名
> select * from sysobjects where xtype='u'
> go
(6) 看表的内容
> select * from 表名;
> go
> QUIT
==================================================================================================
各系统安装sqlcmd工具方式:
https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver15
==================================================================================================
在 RHEL 8上安装工具
1.进入超级用户模式。
sudo su
下载 Microsoft Red Hat 存储库配置文件。
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo
退出超级用户模式。
exit
2.如果安装了早期版本的 mssql-tools,请删除所有旧的 unixODBC 包。
sudo yum remove mssql-tools unixODBC-utf16-devel
运行以下命令,以使用 unixODBC 开发人员包安装 mssql-tools。
sudo yum install mssql-tools unixODBC-devel
3.若要将 mssql-tools 更新至最新版本,请运行以下命令:
sudo yum check-update
sudo yum update mssql-tools
4.可选:向bash shell中的 PATH 环境变量添加 /opt/mssql-tools/bin/。
要使sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
要使sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
==================================================================================================
在Ubuntu 16.04上安装工具
备注:
从 SQL Server 2019 CU3 开始,支持 Ubuntu 18.04。
自 SQL Server 2019 CU10 起,开始支持 Ubuntu 20.04。
如果你使用的是 Ubuntu 18.04 或 Ubuntu 20.04,请将下面步骤 2 中的存储库路径从/ubuntu/16.04 更改为/ubuntu/18.04 或/ubuntu/20.04。
1.导入公共存储库 GPG 密钥。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
注册 Microsoft Ubuntu 存储库。
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
2.更新源列表,并使用 unixODBC 开发人员包运行安装命令。
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
3.若要将 mssql-tools 更新至最新版本,请运行以下命令:
sudo apt-get update
sudo apt-get install mssql-tools
4.向bash shell中的PATH环境变量添加/opt/mssql-tools/bin/。
要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
==================================================================================================
在SLES 12上安装工具
1.将 Microsoft SQL Server 存储库添加到 Zypper。
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/prod.repo
sudo zypper --gpg-auto-import-keys refresh
2.使用 unixODBC 开发人员包安装 mssql-tools。
sudo zypper install mssql-tools unixODBC-devel
3.若要将 mssql-tools 更新至最新版本,请运行以下命令:
sudo zypper refresh
sudo zypper update mssql-tools
4.向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/。
要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
==================================================================================================
Docker
如果在 Docker 容器中运行 SQL Server,则 SQL Server 命令行工具已包含在 SQL Server Linux 容器映像中。
如果使用交互式 bash shell 附加到正在运行的容器,则可以在本地运行这些工具。
脱机安装
如果 Linux 计算机不能访问之前部分中使用的在线存储库,则可以直接下载包文件。
这些包位于 Microsoft 存储库中,网址为 https://packages.microsoft.com。
提示:
如果通过之前部分中的步骤成功安装了包,则无需下载或者手动安装以下包。这仅适用于脱机的情况。
首先,找到并复制适用于你的 Linux 分发版的 mssql-tools 包:
Linux 分发版 mssql-tools 包位置
Red Hat https://packages.microsoft.com/rhel/7.3/prod
SLES https://packages.microsoft.com/sles/12/prod
Ubuntu 16.04 https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools
此外,找到并复制 msodbcsql 包,它是一个依赖项。 msodbcsql 包对 unixODBC-devel(Red Hat 和 SLES)或 unixodbc-dev (Ubuntu) 也具有依赖项。 下表列出了 msodbcsql 包的所在位置:
Linux 分发版 ODBC 包位置
Red Hat https://packages.microsoft.com/rhel/8/prod
SLES https://packages.microsoft.com/sles/12/prod
Ubuntu 16.04 msodbcsql
unixodbc-dev
将下载的包移至 Linux 计算机。如果使用了不同的计算机下载包,则可以通过“scp”命令将包移至你的 Linux 计算机。
安装包:安装 mssql-tools 和 msodbc 包。如果遇到任何依赖项错误,请忽略,直到出现下一步操作。
平台 包安装命令
Red Hat | sudo yum localinstall msodbcsql-<version>.rpm
| sudo yum localinstall mssql-tools-<version>.rpm
SLES | sudo zypper install msodbcsql-<version>.rpm
| sudo zypper install mssql-tools-<version>.rpm
Ubuntu | sudo dpkg -i msodbcsql_<version>.deb
| sudo dpkg -i mssql-tools_<version>.deb
解决缺少依赖项的问题:此时可能会出现缺少依赖项的情况。如果没有,可以跳过此步骤。
在某些情况下,必须手动查找并安装这些依赖项。
对于 RPM 包,可通过以下命令检查必需的依赖项:
rpm -qpR msodbcsql-<version>.rpm
rpm -qpR mssql-tools-<version>.rpm
对于 Debian 包,如果能够访问包含这些依赖项的已批准存储库,则最简单的解决办法是使用 apt-get 命令:
sudo apt-get -f install
备注:此命令还会完成 SQL Server 包的安装。
如果此命令对 Debian 包不起作用,可通过以下命令检查必需的依赖项:
dpkg -I msodbcsql_<version>_amd64.deb | grep "Depends:"
dpkg -I mssql-tools_<version>_amd64.deb | grep "Depends:"
==================================================================================================
Python程序访问SQLServer数据库
==================================================================================================
import pymssql
server = 'localhost'
user = 'sa'
password = 密码
database = 'ecology'
conn = pymssql.connect(server, user, password, database)
cursor = conn.cursor()
cursor.execute("""
IF OBJECT_ID('persons', 'U') IS NOT NULL
DROP TABLE persons
CREATE TABLE persons (
id INT NOT NULL,
name VARCHAR(100),
salesrep VARCHAR(100),
PRIMARY KEY(id)
)
""")
cursor.executemany(
"INSERT INTO persons VALUES (%d, %s, %s)",
[(1, 'John Smith', 'John Doe'),
(2, 'Jane Doe', 'Joe Dog'),
(3, 'Mike T.', 'Sarah H.')])
conn.commit()
cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
row = cursor.fetchone()
while row:
print("ID=%d, Name=%s" % (row[0], row[1]))
row = cursor.fetchone()
conn.close()
参考文档:
https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver15