[精讚] [會員登入]
1047

[MSSQL] 使用linux連接微軟的MS-SQL

職務上需要連接到mssql,這是我第一次試圖在linux連接mssql。

分享此文連結 //n.sfs.tw/16486

分享連結 [MSSQL] 使用linux連接微軟的MS-SQL@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2025-10-31 10:00:48 最後編修
2025-02-07 15:10:33 By 張○○
 

自動目錄

職務上需要連接到mssql,這是我第一次試圖在linux連接mssql,以前有寫過.net一段時間,但是十多年不曾再碰,現在早忘得一乾二淨。

好在網路上很多熱心的網友,做起來不難。

OS

Linux tyc 5.15.0-209.161.7.2.el9uek.x86_64 #2 SMP Tue Aug 20 10:44:41 PDT 2024 x86_64 x86_64 x86_64 GNU/Linux
Red Hat Enterprise Linux release 9.4 (Plow)

安裝連線用底層 unitODBC

這個是連資料庫用的 adapter ,一定要裝,注意大小寫,原本參考的資料不正確[1][2]?。

# yum install unixODBC

這樣就好了,其它不必設定。

 

安裝連線資料庫的agent

依照[2]的建議安裝 freetds

# yum install freetds

注意名稱改了,修改設定檔:

# vi /etc/freetds.conf

[sql48]
        host = 192.168.0.55
        port = 1433
        tds version = 7.0

刮號中的名稱自取,tds版本的話請參考微軟的資料[3][4]。

 

測試

使用tsql來測試

# tsql -S sql48 -U username

 

# tsql -S sql48 -U username
Password:<打入密碼>
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1><輸入指令>

這裡已經確定資料庫沒有問題了,接下來可以下sql,第一次用發現怎麼下指令都沒用,最後透過[5]的說明,才知道要用go,例如show databases:

1> SELECT name, database_id, create_date FROM sys.databases;
2> go
name    database_id     create_date
master  1       Apr  8 2003 09:13:36:390AM
tempdb  2       Jan 21 2025 05:35:55:950PM
model   3       Apr  8 2003 09:13:36:390AM
msdb    4       Oct  8 2022 06:31:57:550AM
MYDB  5       Oct 28 2024 02:55:31:853PM
MYDRP_DEV       6       Feb  7 2025 11:02:01:537AM
MYDRP   7       Feb  3 2025 11:39:49:093AM
MYDRP_TEST      8       Feb  7 2025 11:01:51:913AM
(8 rows affected)

show tables[6]

1> SELECT * FROM INFORMATION_SCHEMA.TABLES;
2> go
TABLE_CATALOG   TABLE_SCHEMA    TABLE_NAME      TABLE_TYPE
MYDRP   dbo     my_table  VIEW
(1 row affected)

查看 sql server 版本

1> SELECT @@VERSION

查看每個資料表筆數

1> SELECT
          t.NAME AS TableName,
          p.rows AS TotalRow
FROM
        sys.tables t
        INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
        INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID
        AND i.index_id = p.index_id
GROUP BY t.Name, p.Rows
ORDER BY p.rows DESC

取回一筆資料

1> select top 50 * from my_table;

這樣子大致上就只剩寫程式,祝使用愉快。

 

JAVA的連線字串

 

String url = "jdbc:sqlserver://192.168.0.55:1433;"

           + "databaseName=mydb;"

           + "user=username;"

           + "password=pwd;"

           + "encrypt=false;"

           + "trustServerCertificate=true;";

encrypt=false → 不使用 SSL(完全明文)

encrypt=true;trustServerCertificate=true → 使用 SSL,但不驗證憑證(安全但允許自簽)

 

 

參考資料

[1] https://blog.csdn.net/neighbor1000/article/details/8824084

[2] https://blog.51cto.com/u_16213320/7083674

[3] https://www.freetds.org/userguide/choosingtdsprotocol.htm#idm67886704

[4] https://www.freetds.org/userguide/choosingtdsprotocol.htm

[5] https://learn.microsoft.com/en-us/sql/relational-databases/databases/view-a-list-of-databases-on-an-instance-of-sql-server?view=sql-server-ver16

[6] https://www.atlassian.com/data/sql/sql-server-list-tables-how-to-show-all-tables

[7] https://medium.com/zero0029/sql-server-%E6%9F%A5%E8%A9%A2%E8%B3%87%E6%96%99%E5%BA%AB%E4%B8%AD%E6%AF%8F%E5%80%8B%E8%B3%87%E6%96%99%E8%A1%A8%E7%9A%84%E7%AD%86%E6%95%B8-rows-8367692217f

 

 

END

你可能感興趣的文章

[CENTOS7/8] 安裝中文字型 如何在Centos7上安裝和移除中文字型?

動態DNS -- dynamic DNS實作 BIND9動態DNS設定

安裝網頁套件管理程式 Bower 一個非常棒的Javascript套件管理程式bower,用完愛不釋手。

[Centos8] 網頁化的系統管理介面 cockpit Centos8 提供一個網頁化的管理介面,稱為駕駛艙,值得一試

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

[CentOS6] 設定 sendmail Centos6上設定sendmail,基本上sendmail會設定多半是為了寄系統信和收垃圾信(喂!!?)

隨機好文

[MAC] 截取螢幕畫面的方法 截取螢幕畫面的方法,在MAC中叫作螢幕快照,英文是screenshot

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。