Sql server 测试数据仓库以查看夜间作业运行后可能出现的问题
我希望能够测试数据仓库中的所有表,以查看夜间作业运行后发生了什么变化。我使用下面的查询查看哪些表没有行,但是我希望扩展测试以查看其他内容,例如作业运行后哪些字段有空值。有没有人做过类似的测试,并且有一个脚本,他们用这个脚本或者我应该测试的任何其他东西Sql server 测试数据仓库以查看夜间作业运行后可能出现的问题,sql-server,testing,Sql Server,Testing,我希望能够测试数据仓库中的所有表,以查看夜间作业运行后发生了什么变化。我使用下面的查询查看哪些表没有行,但是我希望扩展测试以查看其他内容,例如作业运行后哪些字段有空值。有没有人做过类似的测试,并且有一个脚本,他们用这个脚本或者我应该测试的任何其他东西 select t.name table_name, s.name schema_name, sum(p.rows) total_rows from sys.tables t join sys.schemas
select
t.name table_name,
s.name schema_name,
sum(p.rows) total_rows
from
sys.tables t
join sys.schemas s on (t.schema_id = s.schema_id)
join sys.partitions p on (t.object_id = p.object_id)
where p.index_id in (0,1)
group by t.name,s.name
having sum(p.rows) = 0;
我编写了以下存储过程,检查DWH中的所有表以查看哪些列为空。同样,检查哪些数值列为零也可以这样做
alter PROCEDURE EMPTYSEARCH
@WHICHTABLE VARCHAR(50)
AS
SET NOCOUNT ON
DECLARE @SQL nVARCHAR(max),
@TABLENAME VARCHAR(max) ,
@COLUMNNAME VARCHAR(max)
CREATE TABLE #RESULTS(TBLNAME VARCHAR(60),COLNAME VARCHAR(60),SQL VARCHAR(600))
SELECT
SYSOBJECTS.NAME AS TBLNAME,
SYSCOLUMNS.NAME AS COLNAME,
TYPE_NAME(SYSCOLUMNS.XTYPE) AS DATATYPE
INTO #FKFINDER
FROM SYSOBJECTS
INNER JOIN SYSCOLUMNS ON SYSOBJECTS.ID=SYSCOLUMNS.ID
WHERE SYSOBJECTS.XTYPE='U'
AND SYSOBJECTS.NAME = @WHICHTABLE
AND TYPE_NAME(SYSCOLUMNS.XTYPE) IN ('VARCHAR','NVARCHAR','CHAR','NCHAR')
ORDER BY TBLNAME,COLNAME
DECLARE C1 CURSOR FOR
SELECT TBLNAME,COLNAME FROM #FKFINDER ORDER BY TBLNAME,COLNAME
OPEN C1
FETCH NEXT FROM C1 INTO @TABLENAME,@COLUMNNAME
WHILE @@FETCH_STATUS <> -1
BEGIN
SET @SQL = '
IF EXISTS(SELECT * FROM [' + @TABLENAME + '] WHERE (select count(*) from [' + @TABLENAME + '] where [' + @COLUMNNAME + '] is null) = (select count(*) from [' + @TABLENAME + '] ))
INSERT INTO #RESULTS(TBLNAME,COLNAME,SQL) VALUES(''' + @TABLENAME + ''',''' + @COLUMNNAME + ''',''
SELECT * FROM [' + @TABLENAME + '] WHERE (select count(*) from [' + @TABLENAME + '] where [' + @COLUMNNAME + '] is null) = (select count(*) from [' + @TABLENAME + '] '') ;'
PRINT @SQL
EXEC (@SQL)
FETCH NEXT FROM C1 INTO @TABLENAME,@COLUMNNAME
END
CLOSE C1
DEALLOCATE C1
SELECT * FROM #RESULTS