1. 程式人生 > 其它 >.net core連線Liunx上MS SQL Server

.net core連線Liunx上MS SQL Server

場景

  由於業務要求,需要對甲方的一個在SQL Server上的財務表進行插入操作。研究了半天,因為一個小問題折騰了很久。

過程

  .net core端:

  1. 利用EF,就需要的匯入相關的Nuget包,這裡選用:Microsoft.EntityFrameworkCore.SqlServer

  2. 建立SQL Server的上下文

public class SQLContext : DbContext
 {
        public SQLContext(DbContextOptions<SQLContext> options)
            : base
(options) { } public virtual DbSet<TB_Sample_COD> TB_Sample_COD {get;set; } }

  3.在StartUp中將上下文加到依賴注入中,通過配置檔案中的連線字串:

"SQLContext": "Data Source=XXX.XX.XXX.XXX,1433;Initial Catalog=Test;User=SA;Password=XXXXXXX"

   這裡連線字串的具體格式可以參考SQL Server的官方教程:https://www.connectionstrings.com/microsoft-data-sqlclient/

   比如用SQL Server2019中,Data Source:<伺服器地址>,<埠>;使用者:SA(預設使用者,應該不區分大小寫);Password:建立時輸入的密碼

  StartUp檔案中ConfigureServices中加入一下程式碼:

services.AddDbContext<SQLContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("SQLContext")));

  這裡UseSqlServer()和Microsoft.EntityFrameworkCore.SqlServer 的版本有關。

  liunx端:

  4.Liunx上安裝SQL Server,,與其看網上搬來搬去的教程(大部分就是官方教程抄過去的),還不如推薦去官方教程:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup?view=sql-server-ver15

  大概流程就是:

sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

// 安裝mssql-tools
sudo yum install -y mssql-tools unixODBC-devel

// 配置路徑

 echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
 echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
 source ~/.bashrc

  最後檢驗登入:

sqlcmd -S localhost -U SA -P '<YourPassword>'

  5.開啟埠

  SQL Server預設埠1433。在/etc/sysconfig/iptables中新增程式碼如下:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1433-j ACCEPT

  檢視結果,哪些埠開著:

netstat -anp

  最後,用阿里,騰訊等雲伺服器一定要開放埠!!!(這浪費了我半天時間,以為需要安裝和配置freeTDS,後來發現是用於c/c++在liunx上對其他平臺的MS SQL Server進行操作。)

  Navicat:

  6.連線遠端SQL Server

  順便介紹一種navicat用SSH連線SQL資料庫的方式,官方的SQL Server Manager Studio沒有的功能,相當於在伺服器上的本地連線SQL

  

  主機為遠端伺服器的ip地址,使用者和密碼為連線伺服器的使用者密碼。

  

  這裡的主機可以是localhost,使用者密碼是SQL Server資料庫的使用者密碼。

  這樣連線可以說明遠端伺服器的本地SQL資料庫是可以登入訪問的。

最後

  記得在雲伺服器中新增埠規則,氣。(主要是我以為甲方應該開放這個埠了)