易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL SERVER单页数据存储行数计算

 应用示例:
-- 创建2个测试表
CREATE TABLE [dbo].[Table_2019]([Data] [nchar](2019) NOT NULL)
CREATE TABLE [dbo].[Table_2020]([Data] [nchar](2020) NOT NULL)
go
-- 填充数据
declare @i int
set @i = 0
while(@i < 20)
begin
    insert Table_2019(Data) values('')
    insert Table_2020(Data) values('')
    select @i = @i + 1
end
go
查看每个表所占用的空间,结果:
Table_2020 表数据占了 160kb ,Table_2019 表数据占了 80 kb
解释:
SQL Server页定义:
在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息
在 SQL Server 2005 中,行不能跨页,但是行的部分可以移出行所在的页,因此行实际可能非常大。页的单个行中的最大数据量和开销是 8,060 字节 (8 KB)。
在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反。
计算:
计算总的行大小:
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
公式中的值 4 是数据行的行标题开销。
由于nchar是固定长度,所以Variable_Data_Size=0
保留行中称为 Null 位图的部分以管理列的为空性。计算其大小:
Null_Bitmap = 2 + ((Num_Cols + 7) / 8)
由于只有一列,所以Null_Bitmap = 3
由以上原则可以计算:
nchar(2019): 2019×2+0+3+4=4045
nchar(2020): 2020×2+0+3+4=4047
微软给出的每页容纳行数计算公式:
计算每页的行数(每页有 8096 个可用字节):
Rows_Per_Page = 8096 / (Row_Size + 2)
因为行不跨页,所以每页的行数应向下舍入到最接近的整数。公式中的数值 2 是计算行数时引入的行大小余量。
nchar(2019): 8096/(4045+2)=2.000494193229
nchar(2020): 8096/(4047+2)=1.999506050876
据以上计算,可以得出,一页可以存储只有一列nchar(2019)数据的行数为2行,而存储只有一列nchar(2020)数据的行数为1行。


相关文档:

用SQL Server保持会话状态

 在调用服务器后要继续在服务器中保留数据通常很难,你可以用SQL Server来进行会话状态管理(用户会话数据)。以下教你怎样用它来进行管理。
  在页面开发中,在服务器调用里保留数据是一个常见的不好解决的难题。你也许需要为你的应用程序或特殊用户的会话保存信息。存储这样的数据被称为状态管理,ASP.NET为你提供 ......

关于SQL查询语句里面截取时间的函数若干

有些时候我们需要查询数据库中的时间字段,例如2009-11-11 11:11:11:111 这样的时间格式。
而我们有些时候不用把整个的字段查询出来,需要把前面的日期截取出来,或者把后面的时间截取出来。
这个时候就要用到SQL里面的时间函数了:
select convert(char(10),字段名,108) from 表名
上述语句是将后面的时间查询出来,格 ......

SQL数据库:因为文件组 'PRIMARY' 已满的解决方法

 1.检查你是否限制了文件增长:  
       企业管理器--右键你的数据库--属性--数据文件--看看有没有设置文件的最大值  
   
   2.检查你的磁盘分区格式,如果不是NTFS分区,则会有限制,将磁盘分区格式改成NTFS  
 &n ......

ASP.NET防SQL注入脚本程序 v2.0

虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设 如果权限过大的话很容易被攻击. 再者在网络上找不到好的ASP.NET防注射脚本,所以就自己写了个. 在这里共享出来旨在让程序员免除SQL注入的困扰.
我写了两个版本,VB.NET和C#版本方便不同程序间使用 ......

sql格式化日期

 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号