数据库先写日志还是先写数据?
每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID中的原子性(A)和持久性(D),还大大减少了IO操作,把对数据的修改提交到磁盘的工作交给lazy-writer和checkpoint. 预写式日志(Write-Ahead Logging (WAL)) SQL Server使用了WAL来确保了事务的原子性和持久性.实际上,不光是SQL Server,基本上主流的关系数据库包括oracle,mysql,db2都使用了WAL技术. WAL的...
数据库 面试记录(面试题)
1.面像对像三大特性是什么?什么是多态?多态我有什么优缺点? 三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错...
记一次sql server数据库死锁的解决过程
问题 客户说,数据同步失败了 背景 一个数据同步程序,windows service,从一台mysql的服务器A同步到另外一台sql server 2008r2的服务器B,5秒同步一次 同步过程 根据需求,因为新数据产生的数量不是很大,所以每5秒从中间临时表取出新数据ID,同步程序循环ID同步数据到sql server并删除临时表ID。 发现问题 远程上服务器,先查看进程管理员,sql server cpu 90-98%,明显sql server出问题了,问题在哪先不管。问了下客户,可不可以重启数据库,耽误1分钟(其实只需要10秒,防止意外,必须这样说)。 重启sql serv...
SQL Server数据库定时自动备份并自动删除旧的备份
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库。而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库。要实现数据库的定时自动备份,最常用的方式就是使用SQL Server代理中的作业。启动SQL Server Agent服务,然后在其中新建作业,作业中添加1个备份步骤,类型是T-SQL脚本,然后在命令中输入如下SQL语句,该语句实现了对数据库TestDB1的完整备份,备份文件在C盘Backup文件夹中,文件名就是TestDB1+当时备份的日期字符串.bak。 de...
使用sqlcmd还原大文件
sqlcmd -S DEEPBBS-0950\SQL2008 -i C:\myScript.sql sqlcmd -S DEEPBBS-0950\SQL2008 -i C:\myScript.sql 使用sqlcmd还原大文件: sqlcmd -S DEEPBBS-0950\SQL2008 -i C:\myScript.sql
SQL每个用户取1条记录
SQL每个用户取1条记录: SELECT * FROM table WHERE id IN( SELECT MAX(id) from table group by username )
MSSQL中datetime转unix时间戳
MSSQL中datetime转unix时间戳: SELECT datediff(ss,'1970-01-01',GETDATE())
SQL Server 字符串函数
SQL Server 字符串函数 字符串函数 在开发T-SQL时,经常会需要对字符串进行各种各样的操作,下面介绍常用的字符串函数。 1、获取字符的ASCII码 ASCII ASCII码是对字符的标准编码。要获取字符的ASCII码就可以通过调用ASCII函数来实现。 语法结构: ASCII(espression) 这里的expression是一个返回char或varchar数据类型的表达式,ASCII函数仅对表达式最左侧的字符返回ASCII码值。 返回值:int数据类型。 示例: select ASCII('f') --输出 102 注意如果是多个字符的字符串,也只是返回第一个字符的A...
SQLServer2014删除log文件和清空日志的方案
数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。 一、删除LOG 1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。 勾选删除连接 分离后在数据库列表将看不到已分离的数据库。 2、删除LOG文件 3、附加数据库,附加的时候会提醒找不到log文件。 删除数据库信息信息的ldf文件: 附加数据库之后将生成新的...
sql去掉回车等ASCCII字符
-- UPDATE [dsms].[dbo].[Equipments] SET code=REPLACE(code,CHAR(10),'') UPDATE [dsms].[dbo].[Equipments] SET code=REPLACE(code,CHAR(13),'') UPDATE [dsms].[dbo].[Equipments] SET code=REPLACE(code,CHAR(32),'') sql去掉回车等ASCCII字符