返回顶部

欢迎来到菜鸟大明儿哥的博客

我们一起交流学习,不断提升自我

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

 

posted @ 2021-12-29 17:10  菜鸟大明儿哥  阅读(971)  评论(0编辑  收藏  举报