当前位置: 首页 > news >正文

NULL在SQLServer数据库日志文件中的存储

日志文件ldf中的null

参考日志文件结构
http://blog.csdn.net/jinjazz/archive/2008/08/07/2783872.aspx

通过null_bitmap来确定哪些字段为null,所以在日志中null是不占空间的。

下面可以在得到一行二进制内容,比如通过fn_dbLog函数或者dbcc checklog,然后检查此行内容那些是列是null

static byte[] ReadRowData() { //代码略去 return null; } static void AnerlizeNull() { byte[] data = ReadRowData();//表示一行数据的二进制 //从第二个字节算起,data[2] short index = 2; //第二字节内容为pos_columns_count,表示第pos_columns_count个字节存放了列数信息,可以把本字节理解为指针 short pos_columns_count = BitConverter.ToInt16(data, index); //pos_columns_count内容为data_columns_count,表示这个表有data_columns_count列 short data_columns_count = BitConverter.ToInt16(data, pos_columns_count); //pos_columns_count的后两个字节开始表示了Null列信息,Null列信息不止占用1个字节,因为每列按位保存,如果列多,他的占用字节也多 short pos_null_map = (short)(pos_columns_count + 2); //算Null信息占用多少字节 int data_null_map_length = (int)System.Math.Ceiling((double)data_columns_count / 8); //读取Null列的标志内容 byte[] data_null_map = new byte[data_null_map_length]; System.Array.Copy(data, pos_null_map, data_null_map, 0, data_null_map_length); //这里就可以开始检查一个表格的任何一列是否null了,null的数据是不在数据区的,只记录在Null列的标志内容中。 //比如看第10列是否null checkNull(data_null_map, 10); } static bool checkNull(byte[] map, short col_order) { int mapIndex = (col_order - 1) / 8; int mapExp = (col_order - 1) % 8; int iResult = (int)System.Math.Pow(2, mapExp); return (iResult & map[mapIndex]) != 0; }

相关文章:

  • NULL在SQLServer数据库数据文件中的存储
  • Asp.Net MVC4 系列--基础篇(1)
  • Asp.Net MVC 系列--基础篇(2)
  • Asp.Net MVC系列--基础篇(3)
  • [Windows 编程] 如何截获 Alt+Tab 事件
  • 下午调试的几个关于weblogic连接池的问题
  • Asp.Net Set Http Timeout
  • 现实与理想(中国台湾清华大学教授彭明辉)
  • c# 用反射获得静态类成员
  • Sql Server Table 中identity 重置...
  • Asp.Net 中使用HttpModule 做Session验证
  • Asp.Net MVC4系列---基础篇(4)
  • IE8 正式版官方下载链接
  • IE8 视频
  • [Web开发] 快速修复网页在IE8 下的显示兼容问题
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • pdf文件如何在线转换为jpg图片
  • Spring Cloud中负载均衡器概览
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 阿里研究院入选中国企业智库系统影响力榜
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 复杂数据处理
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 力扣(LeetCode)357
  • 深度学习入门:10门免费线上课程推荐
  • 我从编程教室毕业
  • 线上 python http server profile 实践
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 7行Python代码的人脸识别
  • ​ArcGIS Pro 如何批量删除字段
  • !$boo在php中什么意思,php前戏
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (39)STM32——FLASH闪存
  • (C语言)fgets与fputs函数详解
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (rabbitmq的高级特性)消息可靠性
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)c52学习之旅-中断实验
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)Linux+Windows下安装ffmpeg
  • (译)2019年前端性能优化清单 — 下篇
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net MySql
  • .NET 的程序集加载上下文
  • .Net中wcf服务生成及调用
  • .NET中winform传递参数至Url并获得返回值或文件
  • /etc/fstab 只读无法修改的解决办法
  • @NestedConfigurationProperty 注解用法
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [20170728]oracle保留字.txt