2014-07-18 2 views
-1

해결 방법 : "테이블 당 총 바이트 크기 (레코드 당 하나) NVARCHAR (최대) 필드를 포함하지 말고 해당 테이블에 대한 VARCHAR (최대) 필드. "테이블 당 필드 크기 (바이트 단위) SQL

가장 큰 설명이 아니지만 내가 작업해야 할 부분입니다.

기본적으로 테이블에 대한 각 필드의 크기를 찾는 방법이 있습니까?

답변

0
SELECT o.name TABLE_name, c.name colimn_name, c.max_length, t.name type 
FROM sys.columns c 
JOIN sys.objects o ON c.object_id=o.object_id AND o.type='U' 
JOIN sys.types t ON c.system_type_id=t.system_type_id 

길이는 -1

+0

NVARCHARMAX 필드에서 작동 한 것은 고맙습니다. –

0

INFORMATION_SCHEMA.COLUMNS 및/또는 INFORMATION_SCHEMA.COLUMNS을 검사해야합니다. 크기가 바이트로 쓰여 있는지 알 수 없지만 이것이 도움이 될 수 있습니다!

+0

내가 이미 해봤지만, 덕분에, 그것은 내가 지금까지 원하는 것을 가장 가까운 일이 데이터 유형을 포함하는

최대 편집을 나타냅니다! –

0

다음과 같이 할 수 있습니다. 나는 내장 된 방법을 모른다. 그리고 나는 그것을 발견 할 수 없었다.

SELECT SUM(CASE DATA_TYPE 
      WHEN 'numeric' THEN (CASE WHEN NUMERIC_PRECISION <= 9 THEN 5 
            WHEN NUMERIC_PRECISION <= 19 THEN 9 
            WHEN NUMERIC_PRECISION <= 28 THEN 13 
            ELSE 17 END) 
      WHEN 'int' THEN 4 
      WHEN 'bigint' THEN 8 
      ... --whatever other datatypes you want to handle, like tinyint, datetime, etc. 
      ELSE 0 END) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = @tableName 

설명서를 통해 해당 번호를 받았습니다. 나는 모든 타입이 바이트 단위로 크기를 나열 했으므로, 더 좋은 것을 찾을 수 없다면 적어도 이것을 할 수 있어야한다. 적어도 SQL에는 많은 타입이 없습니다 ...

저는 사양이 NVARCHAR(MAX)을 무시하라고 말했지만, 원한다면 행의 최대 크기를 보여줄 수있는 또 다른 열을 줄 수도 있습니다. CHARACTER_MAXIMUM_LENGTH 열을 사용하여 에서까지 최대 오프셋을 지정하십시오.