[MSSQL] 현재 DB에서 데이터가 N개 미만인 테이블 목록 조회

2013. 6. 27. 17:55Coders

참고로,

인라인뷰에서 TOP 을 사용했기 때문에 MSSQL2005 미만 버전에서는 작동하지 않을 겁니다.

실제 제가 테스트해 봤던 DB에서는 데이터가 무지 많아서, 카운트를 그냥 때려넣기엔 부담이 좀 되었거든요.

근데, Syntax Highlighting 이 이상하게 색깔이 나오네요.

이거 무슨 문제인 지 아시는분???



DECLARE @SQLString      NVARCHAR(500),
        @ParmDefinition NVARCHAR(500),
        @DataCount      VARCHAR(30),
        @TableName      VARCHAR(50),
        @MinCount       VARCHAR(30);

SET @MinCount = '10'; --여기에서 최소 카운트를 지정
SET @TableName = '';

PRINT '데이터가 ' + @MinCount + '개 미만인 테이블 리스트'
WHILE EXISTS ( SELECT 1 FROM SYS.TABLES WITH (NOLOCK) WHERE NAME > @TableName)
BEGIN
    SELECT TOP 1 @TableName = NAME
      FROM SYS.TABLES WITH (NOLOCK)
     WHERE NAME > @TableName
     ORDER BY NAME ASC;
     
    SET @SQLString = N'SELECT @DataCountDynamic = COUNT(1) FROM ( SELECT TOP ' +
         @MinCount + ' * FROM ' + @TableName + ' ) T';
    SET @ParmDefinition = N'@DataCountDynamic VARCHAR(30) OUTPUT';

    EXECUTE sp_executesql @SQLString, @ParmDefinition, @DataCountDynamic=@DataCount OUTPUT;

    IF @DataCount < @MinCount
    BEGIN
        PRINT @TableName;
    END;
END;