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

sqlでvarbinaryにDATALENGTH Funtionを使用できます。それは、列固有のものですが、

、あなたは句が

SELECT DATALENGTH(column1), DATALENGTH(column2)... DATALENTH(columnN) FROM Table where <condition to get your row>; 
関連する問題