-
SQLServer误区30日谈第19天Truncate表的操作不会被记录到日志
误区#19:Truncate表的操作不会被记录到日志错误在用户表中的操作都会被记录到日志。在SQLServer中唯一不会被记录到日志的操作是TempDB中的行版本控制...
数据库操作教程 2022-09-23 17:06:32 -
SQLServer误区30日谈第2天DBCCCHECKDB会导致阻塞
误区#2:DBCCCHECKDB会引起阻塞,因为这个命令默认会加锁这是错误的! 在SQLServer7.0以及之前的版本中,DBCCCHECKDB命令的本质是C语言实现的一个不断嵌套循环的代码并对表加表锁(循环嵌套算法时间复杂度是嵌套次数的N次方,作为程序员的你懂得),这种方式并不和谐,并且….. 在SQLServer2000时代,一个叫SteveLindell的哥们(现在仍然在SQLServerTeam)使用分析事务日志的方法来检查数据库的一致性的方式重写了DBCCCHECKDB命令。DBCCCHECKDB会阻止截断日志...
数据库操作教程 2022-09-23 17:04:37 -
SQLServer误区30日谈第27天使用BACKUPWITHCHECKSUM可以替代DBCCCheckDB
误区#27:使用BACKUP...WITHCHECKSUM可以替代DBCCCheckDB错误 乍一看,由于BACKUPWITHCHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下: 由SQLServer2000或是更早版本升上来的数据库pagechecksums必须开启,在开启后,并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP...WITHCHECKSUM就有可能导致一些损坏页不被发现,造成的后果…… 除此之外,还有一个问题是完整备份的时间间隔相对比较长,假如说一个月,而相对于DBCCCheckDB的最佳实践是一个礼拜,这导致WITHCHECKSUM不能替代CHECKDB...
数据库操作教程 2022-09-23 17:03:22 -
sqlserver日志恢复方法(搞定drop和truncate)
--1usemasterbackupdatabaselogTesttodisk='D:ProgramFilesMicrosoftSQLServerMSSQL10.MSSQLSERVERMSSQLBackuplogTest...
数据库操作教程 2022-09-23 16:55:03 -
DBCCCHECKIDENT重置数据库标识列从某一数值开始
DBCCCHECKIDENT(N'dbo.Orders',RESEED,0);DBCCCHECKIDENT语法DBCCCHECKIDENT(table_name[,{NORESEED|{RESEED[,new_reseed_value]}}])[WITHNO_INFOMSGS]参数table_name是要对其当前标识值进行检查的表名。指定的表必须包含标识列...
数据库操作教程 2022-09-23 16:54:38 -
SQLServer数据修复命令DBCC一览
1.DBCCCHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。usemasterdeclare@databasenamevarchar(255)set@databasename='需要修复的数据库实体的名称'execsp_dboption@databasename,N'single',N'true'--将目标数据库置为单用户状态dbcccheckdb(@databasename,REPAIR_ALLOW_DATA_LOSS)dbcccheckdb(@databasename,REPAIR_REBUILD)execsp_dboption@databasename,N'single',N'false'--将目标数据库置为多用户状态然后执行DBCCCHECKDB('需要修复的数据库实体的名称')检查数据库是否仍旧存在错误...
数据库操作教程 2022-09-23 16:54:12 -
drop,truncate与delete的区别
注意:这里说的delete是指不带where子句的delete语句相同点truncate和不带where子句的delete,以及drop都会删除表内的数据不同点:1.truncate和delete只删除数据不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态.2.delete语句是dml,这个操作会放到rollbacksegement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.truncate,drop是ddl,操作立即生效,原数据不放到rollbacksegment中,不能回滚.操作不触发trigger.3.delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动显然drop语句将表所占用的空间全部释放truncate语句缺省情况下将空间释放到minextents个extent,除非使用reusestorage;truncate会将高水线复位(回到最开始).4.速度,一般来说:dr...
数据库操作教程 2022-09-23 16:54:06 -
deletefrom表名与truncatetable表名区别
1.delete不能使自动编号返回为起始值。但是truncate能使自动增长的列的值返回为默认的种子2.truncate只能一次清空,不能按条件删除...
数据库操作教程 2022-09-23 16:49:22 -
浅谈mssqlaccess数据库top分页方法
但是有利也有弊,它要求排序字段必须构成唯一记录,且select后的字段列表中,不允许出现与排序字段同名的字段。虽然sql2k5及以上版本已经提供了rownum()来进行分页处理,但是使用sql2k进行开发的还是较多的复制代码代码如下:uusingsystem.collections.generic;singsystem;usingsystem.text;///<summary>///构造分页后的sql语句///</summary>publicstaticclasspaginghelper{ ///<summary> ///获取分页sql语句,排序字段需要构成唯一记录 ///</summary> ///<paramname="_recordcount">记录总数</param> ///<paramname="_pagesize">每页记录...
数据库操作教程 2022-09-23 16:47:10 -
一个删选数据的例子,使用GROUP、DISTINCT实例解析
需求描述:一个表MyImage,列有:号码ID,路径PATH如:ID PATH1 C:/1 C:/1 D:/2 C:/2 C:/3 A:/3 C:/4 D:/写个SQL语句,返回这样的记录的ID号:相同ID存在不同PATH。如上例子,正确的结果应是:ID13(ID2没有不同PATH,ID4只有一条记录不存在不同PATH) 这是我的SQL语句:复制代码代码如下:selectIDfrom[MyImage]asA groupbyID having ( selectCOUNT(distinct(Path))from[MyImage]asBwhereB.ID=A.ID ) >1...
数据库操作教程 2022-09-23 16:46:43 -
SqlServer中的DBCC命令详细介绍
今天研发中心办年会,晚上就是各自部门聚餐了,我个人喜欢喝干红,在干红中你可以体味到那种酸甜苦辣。...
数据库操作教程 2022-09-23 16:45:05 -
SQLSERVER与ACCESS、EXCEL的数据转换
熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助...
数据库操作教程 2022-09-23 16:30:11