1

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

Возможно ли это как можно?

ответ

2

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

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) 

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

+0

Это хорошо работает. Как вы думаете, это будет работать на общих серверах? – Nitesh

+1

@Nitesh он должен работать с общими серверами. –

+0

Спасибо @Neeraj. – Nitesh

1

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

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

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