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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM