巧用SQL剔除数据库空白表的方式分析

张恒芳,扬州市江都区审计局。

论文代写。

审计人员在实施计算机辅助审计时,常常遇到这样的问题:审计人员需要从数据库中几十甚至数百张表中找出有用信息,而一个数据库中很多表是无记录的,如果能先将这一部分的空白表剔除,将大大缩小审计人员查找数据表的范围,提高数据分析的效率。通过利用SQLServer游标工具、系统表格[sysobjects]、存储过程sp_MSforeachtable等,可以很方便地剔除数据库中的空白表。方法一:使用SQLServer的[sysobjects]系统表格。数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在[sysobjects]表中占一行,该系统表的字段包括:对象名name、对象类型xtype(U=用户表)等。利用游标提取功能提取[sysobjects]表中用户表名,然后对提取用户表进行判断,如果用户表无记录,则删除该表,具体步骤如下:第一步,打开SQLServer查询分析器,选择目标数据库。第二步,定义参数:declare@tbnamevarchar(100)第三步,定义游标,从数据库中取出用户表名:Declarecur1cursorforselectnamefromsysobjectswherextype='u'第四步,打开游标提取用户表名,对用户表进行判断,删除空白表: 开题报告 /html/lunwenzhidao/kaitibaogao/ Opencur1Fetchnextfromcur1into@tbnameWhile@@fetch_status=0BeginExec ('ifnotexists (select*from'+@tbname+')droptable '+@tbname)Fetchnextfromcur1into@tbnameEnd第五步,关闭并释放游标资源:Closecur1Deallocatecur1方法二:使用SQL的系统存储过程sp_MSforeachtable实现上述目标。系统存储过程Sp_MSforeachtable可以用来对某个数据库的所有表或某个SQL服务器上的所有数据库进行管理,它包含7个参数:@command1nvarchar(2000),第一条运行的T—SQL指令@replacecharnchar(1)=N'?',指定的占位符号@co mmand2nvarchar (2000)=null,第二条运行的T—SQL指令@command3nvarchar (2000)=null,第三条运行的T—SQL指令@whereandnvarchar(2000)=null,可选条件来选择表@precommandnvarchar(2000)=null,在表前执行的指令@postcommandnvarchar(2000)=null在表后执行的指令这里,主要使用参数@command1,具体步骤如下:第一步,打开SQLServer查询分析器,选择目标数据库。 毕业论文 第二步,执行系统存储过程sp_MSforeachtable语句,删除空白表:Execsp_msforeachtable@command1=ifnotexists (select*from?)droptable?其中,?类似于在WINDOWS中搜索文件时的通配符。^ 简历大全 /html/jianli/。

0 次访问