随笔分类 - Sqlserver
摘要:SQL Server数据库三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式介绍 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate log“,其实这个名字更形象,在Simple模式下,SQL Server会在每次checkpoin
阅读全文
摘要: 磁盘空间有限,需要收缩日志文件释放空间。 数据库名称上右击属性->文件,逻辑名称日志文件默认名称为“_log”结尾。 编辑 alter database 数据库 set recovery simple dbcc shrinkfile('XXX_log',2,truncateonly) alte
阅读全文
摘要: 编辑 现象: 系统出现异常,手动执行过程提示如上。 问题排查: 1.直接执行的过程事务挂起(排除) 2.重启数据库实例(重启后无效) 3.过程中套用过程,套用的过程中使用事务,因为插入的表结构字段超出最大长度(修改表结构问题恢复) 结论: 事务执行失败,嵌套层级太深。
阅读全文
摘要: 编辑 今天正式环境突发需要这种情况 原因:数据库磁盘已满 解决方式:清理掉占用磁盘空间大的表,清理无效的历史备份文件。
阅读全文
摘要: nchar(n): 固定大小字符串数据。 n 用于定义字符串大小(以双字节为单位),并且它必须是 1 到 4,000 之间的值。 存储大小为 n 字节的两倍。 编辑 varchar(n): 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之
阅读全文
摘要:优点: 1.强化约束:强制复杂业务的规则和要求,能实现比check语句更为复杂的约束。 2.跟踪变化:触发器可以侦测数据库内的操作,从而禁止数据库中未经许可的更新和变化。 3.级联运行:侦测数据库内的操作时,可自动地级联影响整个数据库的各项内容。 4.嵌套调用:触发器可以调用一个或多个存储过程。触发
阅读全文
摘要:SUBSTRING ( expression, start, length ) 参数 expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。 start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置,索引是从1开始。 length
阅读全文
摘要: 共享锁:(读取)操作创建的锁。其他用户可以并发读取数据,但任何事物都不能获取数据上的排它锁,直到已释放所有共享锁。 共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的
阅读全文
摘要:优点: 允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改 当用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改 begin transelect * from address WI
阅读全文
摘要: 最近在做一个访问频率比较高的app接口,框架用的dapper,在我们后台写的异常日志会偶尔出现以下错误。 事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务 实所有的死锁最深层的原因就是一个:资源竞争 表现一: 一个用户A 访问表A(锁住了表A),
阅读全文
摘要:一、查询视图、函数、存储过程中的关键字 SELECT a.name,a.[type],b.[definition] FROM sys.all_objects a,sys.sql_modules b WHERE a.is_ms_shipped=0 AND a.object_id = b.object_
阅读全文
摘要:作为程序员来说,与数据库打交道是十分频繁的分页查询是一个开发者必须掌握的基本知识点,目前整理了下面三种SQLServer分页查询语句的写法,仅供参考。 一、Top Not IN 方式(查询靠前的数据较快) 语法格式: select top 条数 * from tablename where Id n
阅读全文
摘要:1、症状:打开表或者存储过程,出现异常,查询过久等 2、解决方案: 2.1 最简单的方法:直接重启SQL SERVER服务 2.2 关闭出现死锁的进程 1 2 3 4 5 --查询死锁进程 SELECT blocking_session_id '阻塞进程的ID', wait_duration_ms
阅读全文
摘要:1.脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问这个数据,然后使用了这个数据。 2. 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二
阅读全文
摘要:警告: 聚合或其他 SET 操作消除了 Null 值。 这个没什么影响,主要看你想要的结果,要是想不出现这个提示,就在聚合之前用isnull处理要聚合的列了。 1. 对于某些特殊sql语句不太好处理的可以在顶部增加语句处理 SET ANSI_WARNINGS OFF; 2.在聚合之前用isnull处
阅读全文
摘要:语法: -- try catch 可以截住错误 begin try 具体调用逻辑end try begin catch --print '出现错误!' --print error_message() --print error_number() if error_number()=1801 begi
阅读全文
摘要: PATINDEX()和CHARINDEX()都是可以在一段字符串中查找子字符串位置的函数。 主要区别:PATINDEX()支持通配符来查找,CHARINDEX()不支持通配符查找。 1.PATINDEX() PATINDEX()语法格式:PATINDEX(%pattern%,expression
阅读全文
摘要:局域网多台数据库服务器之间通过链接服务器互相访问,直接在查询编辑器中更新很快,通过链接服务器更新就报超时。 解决方案: 不直接调用表更新,调用远程存储过程更新,把更新表的操作放在远程服务器上。 例如: update [10.x.x.x].[Test].dbo.Table set A字段=111; 把
阅读全文
摘要:sqlserver数据库发现大小写不敏感,可以通过自己写函数处理,也可以使用sqlserver自带的Chinese_PRC_CS_AS去处理。 例:查询字段中包含小写字母a select * from table where 字段 collate Chinese_PRC_CS_AS like 'a%
阅读全文
摘要:分库 垂直切分(纵向切分) 比如说一个电商平台,里面包含了订单系统,物流系统,仓储系统等,原先是用的同一个数据库,现在我们可以设计成每个系统都有自己的数据库服务器,不公用同一个数据库,不同系统之间的数据可以通过API调用来,这样压力就会小很多。这可以理解为垂直切分。 水平切分(横向切分) 比如订单系
阅读全文