SQL Server

【故障公告】阿里云 RDS 数据库突发 CPU 近 100% 引发全站故障

断了今生、忘了曾经 提交于 2020-09-24 13:31:03
今天晚上9点我们收到阿里云的告警通知: 【阿里云监控】华东1(杭州)-云数据库RDS版<cnblogsdb> [instanceId=xxx] 于21:00 发生告警, 前往诊断 CPU使用率平均值(98.25>=80 ), 持续时间4分钟, rds_CpuUsage 收到通知后,我们立即登录阿里云 RDS 控制台进行主备库切换,等主备库完成切换后一看并没有切换过来,赶紧再次进行切换,第2次切换成功了,切换完成后 CPU 立刻降至正常水平,全站恢复正常。 这次故障发生时间是8月20日20:55~21:14,由此给您带来麻烦,请您谅解。 上次发生同样故障是6月24日,详见 【故障公告】阿里云 RDS 实例 CPU 100% 故障引发全站无法正常访问 。 阿里云数据库专家分析后怀疑是“LINQ 生成的 SQL 存在问题,导致概率性 SQL Server 出现参数嗅探问题”。 我们会进一步分析并优化这次引发参数嗅探问题的 SQL 语句。 来源: oschina 链接: https://my.oschina.net/u/4370783/blog/4523198

SQL Server中删除重复数据的几个方法

喜欢而已 提交于 2020-08-20 08:44:32
SQL Server中删除重复数据的几个方法   数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……   方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count( ) from 表名 group by 主字段 having count( ) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0   方法二   有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。   1、对于第一种重复,比较容易解决,使用 select distinct from tableName   就可以得到无重复记录的结果集。   如果该表需要删除重复的记录(重复记录保留1条

SQL Server中删除重复数据的几个方法

一个人想着一个人 提交于 2020-08-20 08:44:19
SQL Server中删除重复数据的几个方法   数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……   方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count( ) from 表名 group by 主字段 having count( ) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0   方法二   有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。   1、对于第一种重复,比较容易解决,使用 select distinct from tableName   就可以得到无重复记录的结果集。   如果该表需要删除重复的记录(重复记录保留1条

打造自己的.NET Core项目模板

给你一囗甜甜゛ 提交于 2020-08-20 07:45:54
前言 每个人都有自己习惯的项目结构,有人的喜欢在项目里面建解决方案文件夹;有的人喜欢传统的三层命名;有的人喜欢单一,简单的项目一个csproj就搞定。。 反正就是萝卜青菜,各有所爱。 可能不同的公司对这些会有特定的要求,也可能会随开发自己的想法去实践。 那么,问题就来了。如果有一个新项目,你会怎么去创建? 可能比较多的方式会是下面三种: 简单粗暴型,打开VS就是右键添加,然后引入一堆包,每个项目添加引用。 脚本型,基于dotnet cli,创建解决方案,创建项目,添加包,添加项目引用。 高大上型,VS项目模板,直接集成到VS上面了。 以前我也是基于dotnet cli写好了sh或ps的脚本,然后用这些脚本来生成新项目。 但是呢,这三种方式,始终都有不尽人意的地方。 因为建好的都是空模板,还要做一堆复杂的操作才可以让项目“正常”的跑起来。比如,这个公共类要抄过来,那个公共类要抄过来。。。这不是明摆着浪费时间嘛。。。 下面介绍一个小办法来帮大家省点时间。 基于dotnet cli创建自己的项目模板,也就是大家常说的脚手架。 dotnet cli项目模板预热 开始正题之前,我们先看一下dotnet cli自带的一些模板。 可以看到种类还是很多的,由于工作大部分时间都是在写WebAPI,所以这里就用WebAPI来写个简单的模板。 下面我们就基于dotnet cli写一个自己的模板。

sql server如何设置密码过期时间呢?

廉价感情. 提交于 2020-08-20 07:05:49
【1】在sql server中,如何指定密码过期? 在我们的安全性选项、登录名属性中,可以设置强制密码过期。    【2】如何确定sql server 密码过期时间是多久呢? 这个密码是跟随winodws策略来确定密码过期时间的。 那么winodws密码策略在哪里可以找到呢? 运行=》gpedit.msc=》计算机配置=》windows设置=》安全设置=》账户策略=》密码策略=》密码的最长使用期限    我们这里就可以看到,默认最长是90天。我们可以自行修改。我们改了,sql server的账户过期时间也会改,但这是针对所有账户的,并不能独立让某个账户以自定义日期过期,达不到我们的预期。 【3】如何设置账户的过期时间呢? 我们如何做到像oracle一样 只给某个账户2天,给另外一个账户3天,过期了就自动禁用或者销毁? 这个只能自己写SP了。思路如下: 写2个存储过程包含: 第1个,创建登录名SP (1)创建登录名、映射数据库、角色、权限,这些可以通过入参来决断 (2)构建一个存储表,记录创建时间(getdate)、到期时间(通过入参) 第2个,判断过期SP (1)根据存储表,判断当前时间是否有账户过期,如果过期则禁用或删除 写好作业,定时执行: 记得做好错误处理和失败处理 来源: oschina 链接: https://my.oschina.net/u/4257871/blog

2020/5/20数据库mysql学习通用数据库的对象中英文介绍笔记

天涯浪子 提交于 2020-08-20 07:00:55
通用数据库对象中英文介绍 • 数据data 指对客观事件进行记录并可以鉴别的符号,在计算机系统中存储为可以被识别的信息 • 数据库database 存放具体数据的最大的逻辑对象,通常按需求将同一项目所属的数据统一放在一个数 据库中,也可以创建多个数据库 • 数据库管理系统dbms(database management system) 是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS,目 前分为关系型和非关系型数据库管理系统两种 • 关系型数据库管理系统rdbms(relational dbms) 是以关系模型为基础建立的数据库管理软件,典型代表为Oracle, MySQL, SQL Server等 • 实例instance 数据库管理软件安装之后在服务器上启动起来就称为启动了一个实例,通常一个服务 器上只启动一个数据库实例,但也有启动多个实例的,一个实例可以包含多个数据库 • 数据库对象database object 数据库中创建的用来存储,操作数据的对象,比如表,字段,索引,存储过程等 • 表table 数据库对象中的一种,用来存储相同属性的数据,类似Excel表格的sheet • 字段field,列column,属性attribute 表中数据的组成部分,类似Excel表格中的列 • 类型type 每个字段属性之一

sql server 百万级数据库优化方案

耗尽温柔 提交于 2020-08-20 06:54:38
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20 5.in 和 not in 也要慎用,否则会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3 6.下面的查询也将导致全表扫描: select

SQL Server 2008 R2没有卸载干净

巧了我就是萌 提交于 2020-08-20 02:28:06
在卸载Microsoft SQL Server 2008 R2 安装程序(简体中文) 出现 :“警告 26003。无法卸载 Microsoft SQL Server 2008 R2 安装程序支持文件,因为安装了以下产品:SQL Server 2008 R2 SP1 Database Engine Shared SQL Server 2008 R2 SP1 Common Files”。但是在程序列表中并未找到该程序,在网上找了找资料,可以使用 WMIC(Windows Management Instrumentation Command-line)列出当前系统上安装的应用程序,最后再使用 MSIEXEC /X 将其卸载! 使用360安全卫士“功能大全”的“强力卸载软件”功能,然后提示以下两个问题 无法卸载,因为安装了 SQL Server 2008 R2 Database Engine Shared SQL Server 2008 R2 Common Files 但是在已安装软件中找不到这两个软件,那么解决办法是 首先点击运行,输入cmd,进入命令行模式 然后输入WMIC 然后执行product list 找到 SQL Server 2008 R2 Database Engine Shared SQL Server 2008 R2 Common Files 二者后面分别对应:

SQL server2005数据库使用Windows身份验证和SQL server身份验证登陆都报错:18456

爱⌒轻易说出口 提交于 2020-08-20 01:25:48
由于电脑系统崩溃,导致电脑中的sql server2005数据库以Windows身份验证和SQL server身份验证登陆都报错:18456。网上查询了大量的资料,最后以下面的方式得到解决: 问题一:以Windows身份验证登录时报错18456 解决方法:以管理员身份运行SQL server数据库,即可通过Windows身份验证登陆。 问题二:以sql server身份验证登陆时又报另一个错误报错:(已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)) 解决方法:找到数据库中的配置工具SQL Server Configuration Manager程序,将SQL Server2005网络配置中的Named Pipes和TCP/IP的状态改成启用。然后再次使用SQL server身份验证登陆。如果不行,先使用Windows身份验证登陆后,在安全性中找到sa,鼠标右键属性,将SQL server身份验证的sa密码修改成新密码,再次登录!! 来源: oschina 链接: https://my.oschina.net/u/4359458/blog/4335003

【故障公告】阿里云 RDS 实例 CPU 100% 故障引发全站无法正常访问

有些话、适合烂在心里 提交于 2020-08-20 01:13:31
非常抱歉,今天凌晨 3:20~8:30 左右,我们使用的阿里云 RDS 实例 SQL Server 2016 标准版突然出现 CPU 100% 故障,造成全站无法正常访问,由此给您带来巨大的麻烦,请您谅解。 问题很奇怪,故障期间是数据库服务器负载极低的时间段。从阿里云 RDS 控制台 CloudDBA 看,故障期间下面的一个 SQL 语句大量执行,并且极其消耗 CPU 。 开始我们以为是这个 SQL 语句引发的故障,但排查下来这个 SQL 语句本身并没有性能问题,而且已经使用了至少6个月。 最终恢复正常是通过 RDS 的2次主备切换,当发现故障后,我们立即进行主备切换,但切换后 CPU 依然 100% ,然后我们排查 SQL 语句的问题,排查未果,然后又进行一次主备切换,才恢复正常。 事后分析后发现应该是第一次主备切换没有成功完成,阿里云 RDS 控制台查看不到主备切换日志,但2次切换,只有第2次收到邮件通知,由此可以推断。 您的云数据库RDS实例:xxx(名称:enable or disable task fetching while rds2slb transgfer.)任务触发切换完毕,请检查程序连接是否正常,建议设置自动重连机制以避免切换影响。 问题的原因有待进一个分析,再次抱歉由此给您带来的麻烦。 来源: oschina 链接: https://my.oschina