Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 测试数据仓库以查看夜间作业运行后可能出现的问题_Sql Server_Testing - Fatal编程技术网

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