.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)
        { }
    </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">virtual</span> DbSet&lt;TB_Sample_COD&gt; TB_Sample_COD {<span style="color: rgba(0, 0, 255, 1)">get</span>;<span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }

}

  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 数据库是可以登录访问的。

 最后

  记得在云服务器中添加端口规则,气。(主要是我以为甲方应该开放这个端口了)