【SQL】找出行数与自增标识值不相等的表(即有缺行)

环境:mssql ent 2k8 r2

原理:遍历所有含自增列的用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,然后使用IDENT_CURRENT函数获取表的最大标识值,比较二者并返回结果

IF OBJECT_ID('tempdb..#TableRowCount','U') IS NOT NULL DROP TABLE #TableRowCount
GO
CREATE TABLE #TableRowCount (Name sysname PRIMARY KEY, RowCnt DECIMAL(11,0), Reserved VARCHAR(18), Data VARCHAR(18), Index_Size VARCHAR(18), Unused VARCHAR(18))
GO
DECLARE curCntAllTableRows CURSOR LOCAL FAST_FORWARD FORSELECT name FROM sys.tables WHERE OBJECTPROPERTY(object_id,'TableHasIdentity')=1
OPEN curCntAllTableRows
DECLARE @TableName sysname
FETCH NEXT FROM curCntAllTableRows INTO @TableName
WHILE @@FETCH_STATUS=0
BEGININSERT INTO #TableRowCount EXEC sys.sp_spaceused @TableNameFETCH NEXT FROM curCntAllTableRows INTO @TableName
END
CLOSE curCntAllTableRows
DEALLOCATE curCntAllTableRows/*由于IDENT_CURRENT对于空表也会返回1,所以做特别处理*/
WITH cteA AS (
SELECT Name,RowCnt,CASE IDENT_CURRENT(Name) WHEN 1 THEN RowCnt ELSE IDENT_CURRENT(Name) END AS 'CurrID'
FROM #TableRowCount
)
SELECT Name,RowCnt,CurrID
FROM cteA
WHERE RowCnt<>CurrID

文毕。

posted on 2014-01-28 17:01 ahdung 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ahdung/p/3535808.html

【SQL】找出行数与自增标识值不相等的表(即有缺行)相关推荐

  1. SQL Server中如何取得刚插入的标识值

    数据库实际应用中,我们往往需要得到刚刚插入 的标志值来往相关表中写入数据.但我们平常得到的真的是我们需要的那个值么? 有时我们会使用 SELECT @@Identity 来获得我们刚刚插入的值,比如下 ...

  2. 数据库 MySQL 如何设置表的主键自增起始值

    文章目录 表已有数据,truncate 之后再设置 auto_increment,可行 表已有数据,delete from 之后再设置 auto_increment,可行 主键自增起始值重置 查询表名 ...

  3. sql获取受影响行数、插入标识值

    @@ROWCOUNT--受影响行数 @@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值.但是,SCOPE_IDENTITY 只在当前作用域内返回值 ...

  4. 找异数java_小米19秋招java开发~ 分享笔试题希望春招有好运

    1.一个作业系统中有4台打印机,每个作业需要独占2台打印机才能完成,则该系统最多可以同时执行多少作业而保证不会死锁?(A) A. 3 B. 1 C. 2 D. 4 2.假设一个无向图中包含12个顶点, ...

  5. sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧

    上文我们简述了 SQL 的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你 10 个技巧 一. 使用延迟查询优化 limit [offset], [rows] 经常出现类似以下的 SQL 语句 ...

  6. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  7. python对excel增删改查_利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询, ...

  8. python找完数 pta_PTA——完全数

    PTA 7-45 找完数 网友"云上明月"的程序: #include int isPerfect(int num); int main() { int i,j,m,n,exist= ...

  9. SQL server 中的插入表行数据,以及插入标识值

    语法介绍 (1)在SQL server数据库中我们如何添加新的行,并且添加数据呢? Insert:该语句向表中添加新行 values: 要插入的值 语法如下: Insert into 模式.表名(字段 ...

最新文章

  1. Cocoa 框架 For iOS(一) 框架的介绍,Objectivie-C运行时能力的解析等 (转载)
  2. numpy delete
  3. 输入矩阵包含 nan 或 inf_荣耀 V30 PRO 采用超感光电影相机矩阵
  4. HTML5 新特征之Canvas基础
  5. 晚上运动对身体好吗?
  6. python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  7. c语言创建空顺序表的程序,用C语言编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。...
  8. 使用socket方式连接Nginx优化php-fpm性能
  9. 软件基本功:数组赋值,一定要对齐
  10. 有哪些好用的云盘软件?2022不限速云盘网盘推荐
  11. mysql错误代码1064_如何解决mysql错误代码1064
  12. 可视化开发平台的内容介绍
  13. 2020 年第一届辽宁省大学生程序设计竞赛
  14. 长治机电职业技术学院计算机系,山西机电职业技术学院
  15. 你了解HTTP2协议吗?(二)
  16. 如何利用计算机班级成绩分析,计算机二级excel真题:制作期末成绩分析表
  17. 数字趣解-不可思议的《魔兽世界》
  18. 恶习为什么难戒?因为你在HALT状态
  19. 支付宝手机网页支付接口调用
  20. 今天的日子只属于你!

热门文章

  1. StringBuffer类的功能
  2. 6个技术问题及解决方案
  3. JavaScript DOM编程艺术学习笔记(一)
  4. MyEclipse的快捷使用(含关联源码和Doc的方式)
  5. php 使用curl模拟登录人人(校内)网
  6. 如何备份和还原Firefox设置
  7. 自己动手清除电脑中的***程序
  8. 理解字节序(大小端)
  9. 开源 协作工具_使用HackMD在开源项目上进行协作
  10. sphinx文档_使用Sphinx构建自定义文档工作流