sql server 2005 T-SQL BINARY_CHECKSUM

本文介绍了SQL Server中的BINARY_CHECKSUM函数,该函数用于计算表中行或表达式列表的二进制校验和值。文章详细解释了如何使用BINARY_CHECKSUM来检测表中的行更改,以及它与CHECKSUM函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

返回按照表的某一行或表达式列表计算的二进制校验和值。BINARY_CHECKSUM 可用于检测表中行的更改。

主题链接图标 Transact-SQL 语法约定

BINARY_CHECKSUM ( * | expression [ ,...n ] ) 
*

指定对表中的所有列进行计算。BINARY_CHECKSUM 在计算中忽略具有不可比数据类型的列。不可比数据类型包括 textntextimagecursorxml 和不可比公共语言运行库 (CLR) 用户定义的类型。

expression

任何类型的表达式。BINARY_CHECKSUM 在计算中忽略具有不可比数据类型的表达式。

按照表中任一行计算的 BINARY_CHECKSUM(*) 返回相同的值,只要随后未修改行。BINARY_CHECKSUM(*) 将为大多数(但不是全部)行更改返回不同的值,并可用于检测大多数行修改。

BINARY_CHECKSUM 可应用于表达式列表,并为指定列表返回相同的值。如果任意两个表达式列表的对应元素具有相同的类型和字节表示形式,则对这两个列表应用的 BINARY_CHECKSUM 将返回相同的值。对于此定义,指定类型的空值被认为具有相同的字节表示形式。

BINARY_CHECKSUM 和 CHECKSUM 具有相似的功能:它们可用于计算表达式列表上的校验值,且表达式的顺序将影响结果值。用于 BINARY_CHECKSUM(*) 的列顺序是在表或视图定义中指定的列顺序。其中包括计算列。

CHECKSUM 和 BINARY_CHECKSUM 仅为字符串数据类型返回不同的值,这类字符串的区域设置可能导致具有不同表示形式的字符串进行等值比较。字符串数据类型为 charvarcharncharnvarcharsql_variant(如果 sql_variant 的基类型为字符串数据类型)。例如,字符串“McCavity”和“Mccavity”的 BINARY_CHECKSUM 值不同。反之,在不区分大小写的服务器中,上述字符串的 CHECKSUM 返回相同的校验值。CHECKSUM 值不应与 BINARY_CHECKSUM 值进行比较。

以下示例使用 BINARY_CHECKSUM 检测表的行中的更改。

USE AdventureWorks;
GO
CREATE TABLE myTable (column1 int, column2 varchar(256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
UPDATE myTable set column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
 
做基本完整的备份策略,按备份策略使用percona-xtrabackup做全量和增量备份并模拟数据损坏恢复数据为完整一致。 1)下载 xtrabackup wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz 2)解压 # tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz 3)进入解压目录 # cd percona-xtrabackup-2.4.4-Linux-x86_64/ 4)复制 bin 下的所有程序到/usr/bin [root@localhost percona-xtrabackup-2.4.4-Linux-x86_64]# cp bin/* /usr/bin/ 5)安装相关插件 #yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5 –y 6)下载 percona-toolkit 并安装 #wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm # rpm -vih percona-toolkit-2.2.19-1.noarch.rpm 完全备份: 语法:# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/ # innobackupex --user=root --password=123456 /opt/mysqlbackup/full 增量备份二进制文件: #mysqlbinlog --start-position=2378 /usr/local/mysql/data/mysql-bin.000023 > /opt/mysqlbackup/inc/`date +%F`.sql 模拟数据库损坏: 例 : # rm -fr /home/mysql/data/* 还原完全备份: # innobackupex --apply-log /opt/mysqlbackup/full/2016-09-12_11-29-55/ --apply-log 指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中。 注:/opt/mysqlbackup/full/2016-09-12_11-29-55/备份文件所在目录名称 还原数据库: # innobackupex --copy-back /opt/mysqlbackup/full/2016-09-12_11-29-55/ 这里的--copy-back 指明是进行数据恢复。数据恢复完成之后,需要修改相关文件的权限 mysql 数据库才能正常启动。 # chown -R mysql:mysql /usr/local/mysql/data/ 必须重启 MySQL: # systemctl restart mysqld 验证还原后的数据:
最新发布
06-08
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值