[精讚] [會員登入]
869

[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

你可能感興趣的文章

Linux ext3 系統下刪除檔案救回全記錄 今天一個不小心,下了 rm 的指令,從此奮戰一個下午,終於把檔案救回來,以下是全記錄...

[Centos7] selinux 修改網頁連線的埠號 想把網頁改到非標準的80埠,在selinux上要如何修改?

[bc] linux 的計算機bc 如何計算帶小數點的指數 用 bc 來計算帶小數點的指數,得轉個彎才行

[MSSQL] 使用linux連接微軟的MS-SQL 職務上需要連接到mssql,這是我第一次試圖在linux連接mssql。

使用GPG檔案加解密 簡易的檔案加解密方式,可以讓你重要的資料包括文字檔加解密。

[Centos7] 安裝phpMyAdmin Centos 7有新的方式可以安裝phpmyadmin,不必再採用過去的tarball安裝法。

隨機好文

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

外匯課程經驗 有天遇到某個朋友的正妹朋友,說她有個很棒的外匯投資課程,要我們去聽,只收場地費200大洋。她又說續效最差一個月也有1%,誰還在苦哈哈上班?

[CodeIgniter 3] 資料庫的使用方法整理1/2 --Select的使用 [CodeIgniter 3] 資料庫的使用方法整理:Select的使用

[MAC] 安裝APACHE+PHP OS Darwin OpenIDMac1deAir 15.6.0 Darwin Kernel Version 15.6.

在Centos7 下安裝 Wildfly10 wildfly以前叫JBoss,2014.11.20改名叫Wildfly,起始版本是Wildfly8,現在已經出到Wil