sqlserver

EntityFrameworkCore 常用包

[亡魂溺海] 提交于 2019-12-06 03:11:12
记录下常用的 EntityFrameworkCore 包 Nuget 包管理技巧 我们可以直接添加以下要使用的包,会自动安装并引用需要的依赖包,而不用手动一个个添加. Microsoft.EntityFrameworkCore.Tools 添加该工具包后,我们就可以在 PMC(NuGet Package Manager Console)中使用 Add-Migration & Update-Database & Scaffold-DbContext 等命令进行数据库迁移和更新操作. Microsoft.EntityFrameworkCore.Tools.DotNet 添加该工具包后,我们就可以使用在 命令行 中使用 dotnet-ef 命令来进行数据库迁移和更新操作,注意这里的命令行是跨平台下的任意命令行,比如:Windows/Linux/MacOS. SqlServer Microsoft.EntityFrameworkCore.SqlServer Sqlite Microsoft.EntityFrameworkCore.Sqlite InMemory Microsoft.EntityFrameworkCore.InMemory MySql Nuget: Pomelo.EntityFrameworkCore.MySql Github#入门指南 Oracle Oracle 针对

SqlServer Where后面Case When的使用实例

江枫思渺然 提交于 2019-12-06 02:44:10
SqlServer一个( 用户表:a )中有两个字段都是用户ID 第一个ID是(收费员:id_remitter) 第二个ID是(退费员:id_returner) ( 收费表:b ) 如何根据是否退费(F_RETURN)关联用户表,取用户表中的对应的收费员信息或者退费员信息? 详细说明: a表 b表 关联后查询结果 如果是退使用b表ID_Returner关联(上图红圈) 如果不是退使用b表ID_Remitter关联(上图绿圈) 解决了a表中的一个字段根据需要关联b表中不同字段 来源: https://www.cnblogs.com/hxp-wwx/p/11958468.html

SqlServer性能检测和优化工具使用详细

妖精的绣舞 提交于 2019-12-06 00:27:07
原文: SqlServer性能检测和优化工具使用详细 工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?哥教你,首先你要知道问题出在哪里?如果想知道问题出在哪里,并且找到他,咱们可以借助本文中要讲述的性能检测工具--sql server profiler(处在sql安装文件--性能工具--sql server profiler) 如果知道啦问题出现在哪里,如果你又是绝世高手,当然可以直中要害,写段代码给处理解决掉,但是如果你不行,你做不到,那么也无所谓,可以借助哥的力量给你解决问题。哥给你的武功的秘诀心法是---数据库引擎优化顾问(处在sql安装文件--性能工具--数据库引擎优化顾问) sql server profiler功能 此工具比柯南还柯南,因为他能检测到数据库中的一举一动,即便你不动他,他也在监视你,他很贱的。他不但监视,还监视的很详细,有多详细一会再说,还把监视的内容记录到数据库或者是文件中,给你媳妇告状说你把数据库哪里的性能搞的多么不好,不过他也会把好的给你记录下来,好与不好这当然需要你来分析,其实他也是个很2的柯南。 数据库引擎优化顾问功能 此武功,乃上乘武功。像张无忌的乾坤大挪移,先是接受sql server profiler检测出来的sql,视图,存储过程

SQL中使用insert into select和 select into from

亡梦爱人 提交于 2019-12-05 23:39:14
使用场合 一个表中数据使用另外一个表中获取的或者一个表的数据增加一条。 insert into select INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。 SQL INSERT INTO SELECT 语法 从一个表中复制所有的列插入到另一个已存在的表中: INSERT INTO table2 SELECT * FROM table1[where]; []--表示可以使用where来确定条件。 举例如下: insert into menu_tree select * from menu_tree where sid='6'; 只复制希望的列插入到另一个已存在的表中: INSERT INTO table2 (column_name(s)) SELECT column_value(s) FROM table1; column_name(s)--表示表中存在的列,column_value(s)--表示这些列对应的值。 举例如下: insert into menu_tree(SID,CODE,NAME,ORDER_VAL) select '10','10','一个部','10' from menu_tree where sid = '6' select insert into SELECT INTO

27-SQLServer系统扩展存储过程

限于喜欢 提交于 2019-12-05 23:17:28
一、注意点 1、在SQLServer中,有些系统扩展存储过程,是有风险,需要取消public角色的执行权限。 2、从SQLServer2005开始就不能通过sp_dropextendedproc 删除系统扩展存储过程。 3、系统扩展存储过程是不能被删掉的,也没办法禁用(sysadmin角色的用户肯定拥有执行的权限),所以如果有公司基线要求,我们要做的是拒绝public角色拥有这些扩展存储过程的执行权限。 4、一些高风险的存储过程如下:   xp_cmdshell:以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行的形式返回所有输出;   xp_readerrorlog:读取SQLServer的错误日志;   xp_snmp_getstate:获取snmp状态信息;   xp_sprintf:格式化数据;   xp_sqlinventory:查询SQLServer清单;   xp_sqlregister:对注册表的读取和编辑;   xp_sqltrace:SQL跟踪记录;   xp_servicecontrol:服务管理控制,该存储过程允许用户启动、停止、暂停或运行服务;   xp_sscanf:从字符串中读取数据数据到每个格式参数给出的参数位置;   xp_availablemedia:该存储过程可以查看系统上可用的磁盘驱动器的空间信息;   xp_subdirs

SQLSERVER Update 行锁(rowlock)

Deadly 提交于 2019-12-05 22:24:29
在高并发的情况下,关系型数据库死锁是很难避免的问题,研发能做的是,尽量减少死锁的可能性,那么就要求研发对数据库锁的机制有相当的了解,从而针对问题,尽可能的避免死锁的发生。今天抽空,谈一谈关于update语句条件对锁的影响。我看了网络上的一篇文章,大致意思是 在进行update操作时,where条件是否使用主键或索引,对锁的级别将会有影响,具体内容如下: 下面摘自网络的一段问内容: ROWLOCK告诉 SQL Server只使用行级锁。ROWLOCK语法可以使用在SELECT, UPDATE和DELETE语句中,不过 我习惯仅仅在UPDATE和DELETE语句中使用。 如果在UPDATE语句中有指定的主键,那么就总是会引发行级锁的 。但是当SQL Server对几个这种UPDATE进行批处理时,某些数据正好在同一个页面(page),这种情况在当前情况下 是很有可能发生的,这就象在一个folder中,创建一个新文件需要较长的时间,而同时你又要去更新该folder中的某些文件。当页面锁引发后,事情就开始变得糟糕了。而如果在UPDATE或者DELETE 时,没有指定主键,数据库当然认为很多数据会收到影响,那样 就会直接引发页面锁,事情同样变得糟糕。 通过指定使用行级锁,这种情况可以得到避免。但是需要小心的是,如果你错误地使用在过多行上,数据库并不会聪明到自动将行级锁升级到页面锁

sqlserver取字符串拼音首字母

孤人 提交于 2019-12-05 18:58:39
原文: sqlserver取字符串拼音首字母 sqlserver 使用函数获取一个字符串的拼音首字母 create function dbo.fn_getpinyin ( @str nvarchar(max) ) returns nvarchar(max) as begin declare @word nchar(1),@PY nvarchar(max) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 then (select top 1 PY from ( select 'A' as PY,N'驁' as word union all select 'B',N'簿' union all select 'C',N'錯' union all select 'D',N'鵽' union all select 'E',N'樲' union all select 'F',N'鰒' union all select 'G',N'腂' union all select 'H',N'夻' union all select 'J',N'攈' union all

mssql 单引号插入到sqlserver的方法分享

浪尽此生 提交于 2019-12-05 18:57:41
原文: mssql 单引号插入到sqlserver的方法分享 转自:http://www.maomao365.com/?p=6740 摘要: 下文讲述sqlserver操作中遇到单引号的处理方法 sqlserver 数据库中可以存储任何字符,因为在数据库中字符都是以二进制数据的形式存储在磁盘上,下文讲述遇到单引号如何插入至数据库中。 单引号:因为单引号在sql中起到包含实际值的功能,所以我们插入一个单引号至数据库中,需将输入两个单引号,此时才会插入一个单引号. 单引号的输入采用的方法为:第一个单引号为转义单引号第二个为需要输入单引号。 例:直接编写sql脚本处理单引号的方法 insert into tableName(fieldA,fieldB)values('这是maomao365.com的一个单引号''单引号','单引号测试') 方法2:直接采用单引号的ascii编码插入 insert into tableName(fieldA,fieldB)values(char(39),'单引号插入测试') insert into tableName(fieldA,fieldB)values('maomao365.com单引号测试'+char(39)+'单引号','单引号插入测试') 方法3:存储过程,程序调用时,会自动将单引号转换为双单号,类似方法1 -----在程序调用存储过程时

mssql sqlserver if exists 用法大汇总

无人久伴 提交于 2019-12-05 18:57:30
原文: mssql sqlserver if exists 用法大汇总 摘要: 下文讲述sqlserver中,更新脚本中常用if exists关键字的用法说明,如下所示: 实验环境:sql server 2008 R2 一、检测数据库是否存在于当前数据库引擎下 if exists (select * from sys.databases where name = ’数据库名称’) begin print '数据库名称--存在' end 二、检测数据表是否存在于指定数据库下 if exists (select * from sysobjects where id = object_id(N’[数据表名称]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1) begin print '数据表名称---存在' end 三、检测存储过程是否存在的方法 if exists (select * from sysobjects where id = object_id(N’[存储过程名称]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1) begin print '存储过程名称-存在' end 四、临时表是否存在的方法 if object_id(’tempdb..#临时表名’) is not null begin

SQLServer数据批量导入的几种方式

Deadly 提交于 2019-12-05 18:10:36
SQLServer数据批量导入的几种方式 说到SQLServer 的数据批量导入,下面用常用的几种方式做下对比,后面详细介绍每种方式如何使用(本文的代码使用语言c#) 导入方式 是否需写代码 导入过程能否对数据加工 插入数据的速度 多表数据导入 是否必需写SQL语句 1.通过SQLServer客户端管理工具 F F 快 F F 2.循环调用插入语句、或存储过程 T T 慢 T T 3.使用 SqlBulkCopy T F 快 F F 4.使用SQLServer表值参数 T T 快 T T 1.通过SQLServer客户端管理工具 打开SQLServer客户端连接要操作的数据库引擎 右键要操作的数据库,选择任务--导入数据,第一次使用会弹出向导页如下图: 点下一步,一般要导入的数据都是excel,数据源我们选择 Microsofy Excel (不同版本会有些差异), 浏览选择要导入的excel文件; 下一步选择目标数据源选择我们的SQLServer 根据需要一直点下一步,需要注意在选择表和数据源页面,根据实际需要选择对应的表,以及编辑列的映射, 最后点击完成,导入数据。 2.循环调用插入语句、或存储过程 此方法就是调用写好的sql语句或存储过程来循环的插入数据导数据库;根据需要可以在读取文件数据后,对数据进行校验和加工。 下面代码是一个循环插入的实现,如果需要输出导入进度可以用