해결 방법 : "테이블 당 총 바이트 크기 (레코드 당 하나) NVARCHAR (최대) 필드를 포함하지 말고 해당 테이블에 대한 VARCHAR (최대) 필드. "테이블 당 필드 크기 (바이트 단위) SQL
가장 큰 설명이 아니지만 내가 작업해야 할 부분입니다.
기본적으로 테이블에 대한 각 필드의 크기를 찾는 방법이 있습니까?
해결 방법 : "테이블 당 총 바이트 크기 (레코드 당 하나) NVARCHAR (최대) 필드를 포함하지 말고 해당 테이블에 대한 VARCHAR (최대) 필드. "테이블 당 필드 크기 (바이트 단위) SQL
가장 큰 설명이 아니지만 내가 작업해야 할 부분입니다.
기본적으로 테이블에 대한 각 필드의 크기를 찾는 방법이 있습니까?
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
INFORMATION_SCHEMA.COLUMNS
및/또는 INFORMATION_SCHEMA.COLUMNS
을 검사해야합니다. 크기가 바이트로 쓰여 있는지 알 수 없지만 이것이 도움이 될 수 있습니다!
내가 이미 해봤지만, 덕분에, 그것은 내가 지금까지 원하는 것을 가장 가까운 일이 데이터 유형을 포함하는
최대 편집을 나타냅니다! –
다음과 같이 할 수 있습니다. 나는 내장 된 방법을 모른다. 그리고 나는 그것을 발견 할 수 없었다.
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
열을 사용하여 에서까지 최대 오프셋을 지정하십시오.
NVARCHARMAX 필드에서 작동 한 것은 고맙습니다. –