Получить размер вставленной строки в SQL Server

Я хотел бы знать, есть ли способ узнать общее количество байтов, используемых определенной строкой в ​​SQL Server. Я могу получить максимальный размер строки путем вычисления суммы для всех столбцов nvarchar, но это создает проблему, когда у нас есть nvarchar(MAX) или двоичный столбец. Я ищу точное нет. байтов, используемых строкой на жестком диске.

Возможно ли что-то подобное?

3 ответа

Решение

Попробуйте ниже:

declare @table nvarchar(128)
declare @idcol nvarchar(128)
declare @sql nvarchar(max)

--initialize those two values
set @table = 'YourTable'
set @idcol = 'some id to recognize the row'

set @sql = 'select ' + @idcol +' , (0'

select @sql = @sql + ' + isnull(datalength(' + name + '), 1)' 
    from sys.columns where object_id = object_id(@table)
set @sql = @sql + ') as rowsize from ' + @table + ' order by rowsize desc'

PRINT @sql

exec (@sql)

Строки будут упорядочены по размеру, так что вы можете проверить сверху вниз.

Вы можете использовать DATALENGTH Funtion для varbinary в sql.

Хотя это зависит от столбца, вы можете использовать его для всех столбцов, используя выражение where для получения строки

SELECT DATALENGTH(column1), DATALENGTH(column2)... DATALENTH(columnN) FROM Table where <condition to get your row>;

Используйте это, сделает длину данных для всех столбцов для строки

      select
    SomeOtherColumn,
    Bytes = datalength((select x.* from (values(null))data(bar) for xml auto))
from Table
Другие вопросы по тегам