mez*_*hic 23 sql sql-server sql-server-2008
有没有办法在SQL表中使用md5sum来检查是否有任何列已被修改?
我想检查是否有任何特定列已被更改,而不是我在文本文件中保存的数据的旧副本(我将在C#中使用md5sum).
编辑:每行md5suming
Rem*_*anu 20
有CHECKSUM(*),BINARY_CHECKSUM(*)和CHECKSUM_AGG.他们做CRC32就像checkum一样,但是为了检测行的变化,它应该绰绰有余(你说的是假冒负面碰撞中有40亿的机会).
使用加密哈希HASHBYTES要求您构造表示"行"的表达式.
Muf*_*lix 11
如果您有SQL Server 2008或更新版本,您可以使用:
SELECT HASHBYTES('SHA1', (SELECT TOP 1 * FROM dbo.Table FOR XML RAW))
Run Code Online (Sandbox Code Playgroud)
要么
SELECT
HASHBYTES('SHA1',(
SELECT *
FROM dbo.myTable as tableToHash
where tableToHash.myUniqueKey=myTable.myUniqueKey
FOR XML RAW
)) as rowSHA1
from dbo.myTable;
Run Code Online (Sandbox Code Playgroud)
我必须开发一个解决方案来比较表结构并运行一个过程来导入表之间的差异。
我使用下面的代码来选择数据
--> 表结构
create table #table1 (
campo varchar(10)
,campo1 varchar(10)
)
create table #table2 (
campo varchar(10)
,campo1 varchar(10)
)
Run Code Online (Sandbox Code Playgroud)
--> 插入值
insert into #table1 values ('bruno',1)
insert into #table1 values ('bruno',2)
insert into #table2 values ('bruno',1)
insert into #table2 values ('bruna',2)
Run Code Online (Sandbox Code Playgroud)
--> 创建一个哈希列进行比较
select *,HASHBYTES('SHA1', (select z.* FOR XML RAW)) as hash
into #compare1
from #table1 z
select *,HASHBYTES('SHA1', (select k.* FOR XML RAW)) as hash
into #compare2
from #table2 k
Run Code Online (Sandbox Code Playgroud)
--> 检查有什么不同的行
select * from #compare1 a
full outer join #compare2 b on a.hash = b.hash
where ( a.hash is null or b.hash is null )
Run Code Online (Sandbox Code Playgroud)
也许这对于需要同样东西的人很有用在这里查找上面解释的代码
| 归档时间: |
|
| 查看次数: |
26722 次 |
| 最近记录: |