SQLServer · 最佳实践 · 开发基于.NET CORE的LINUX版本的数据库应用

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介:

title: SQLServer · 最佳实践 · 开发基于.NET CORE的LINUX版本的数据库应用

author: 石沫

背景

最近有客户在基于.NET CORE的LINUX版本连接数据库的应用程序,在开发中,会遇到一些问题,客户会错误地将原因定位到我们的SQL SERVER,陆续收到一些工单,因此,我们需要有计划增强这个方面的能力,同事正确引导用户使用SQL SERVER。

部署环境

1. 服务器版本:ubuntu 14.04

2. .NET CORE 版本:1.0

3. 安装过程

3.1 增加 dotnet apt-get feed

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update

3.2 安装.NET Core SDK

sudo apt-get install dotnet-dev-1.0.0-preview2-003131  

https://www.microsoft.com/net/core#ubuntu

开发第一个数据库应用程序

1. 创建文件夹

mkdir SqlConnect

2. 创建源码文件及编写内容

使用的是C#语言,连接的数据库是RDS for SQL SERVER 2008 R2,有GITHUB上文章介绍,连接SQL SERVER 2008 R2需要SP3,但实际上是不需要的。这个客户会误解!

touch DbApp.cs
vim DbApp.cs
chmod +755 DbApp.cs
---------------------------------------------------------------------------------------------- 
using System;
using System.Data.Common;
using System.Data.SqlClient;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {    
           String sqlConnStr="Data Source=myServer,3433;User ID=zhangshan;Password=123;Initial Catalog=master";
        String sqlStr="select spid,waittype  from sys.sysprocesses";
        
        SqlConnection sqlConn= new SqlConnection(sqlConnStr);
        SqlCommand sqlCmd = new SqlCommand(sqlStr,sqlConn);
        try
        {
            string spid=String.Empty;
            string program_name=String.Empty;

            sqlConn.Open();
            SqlDataReader reader = sqlCmd.ExecuteReader();
            while(reader.Read())
            {
                spid=reader[0].ToString();
                program_name=reader[1].ToString();
                Console.WriteLine("spid="+spid+" "+"waittype="+program_name);
            }
            //Console.WriteLine("The server is:"+svrName);
        }
        catch(SqlException e)
        {    
            Console.WriteLine(e.Message);
        }
        finally
        {
            sqlConn.Close();
        }        
        //Console.Read();
        }
    }
}

3. 创建配置文件

默认情况下,system.data.*包是不存在的(.Nuget/package),因此需要添加包的依赖
"System.Data.Common": "4.1.0",
"System.Data.SqlClient" : "4.1.0",
"System.Runtime": "4.1.0"

touch project.json
vim project.json
---------------------------------------------------------------------------------------------- 
{
    "version": "1.0.0-*",
    "buildOptions": {
        "debugType": "portable",
        "emitEntryPoint": true
    },
    "dependencies": {
        "System.Data.Common": "4.1.0",
        "System.Data.SqlClient" :  "4.1.0",
        "System.Runtime": "4.1.0"
    },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

4. 还原整个项目的依赖库

找当前目录下的项目文件(project.json),然后利用NuGet库还原整个项目的依赖库,然后遍历每个目录,生成项目文件,继续还原该项目文件中的依赖项。

dotnet restore

restore

5. 编译应用程序

dotnet build

build

6. 运行运用程序

dotnet run 

run

OK,第一个简单的数据库程序就完成了。熟悉C#的同学开发起来非常简单!

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
8天前
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
海亮科技选择引入阿里云PolarDB开源分布式版(PolarDB for Xscale)数据库,不仅能解决海亮科技数据库业务中面临的可靠性、稳定性问题,也为海亮科技业务的高速发展提供了更好的灵活性和可扩展性。
|
1天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
16 11
|
10天前
|
存储 Linux 开发工具
如何进行Linux内核开发【ChatGPT】
如何进行Linux内核开发【ChatGPT】
|
8天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
20 0
|
12天前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
30 0
|
12天前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
26 0
|
12天前
|
SQL 存储 调度
|
12天前
|
SQL 安全 数据库
|
Linux Shell 数据库
linux乱码和数据库乱码的问题简单排查
在本地的虚拟机环境一直凑合着用英文,今天想看看中文的东西都显示乱码,下定决心要把问题解决了。 如果直接打印文本内容,通过putty也会显示乱码。 [ora11g@rac1 ~]$ cat aa.sh δ? ε??ο?θ?ζ―δ?δ??ζ?θ― [ora11g@rac1 ~]$ 这个时候很可能是putty的编码转换的问题,通过查看putty的设置,如上,可以看到应该选为utf-8。
924 0