问题标签 [hashbytes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
65 浏览

sql-server - 创建一个哈希键作为唯一键

我有一个非常大的表,其中包含重复的名称和地址信息。该表提供一个执行任务并将结果附加回表的进程。我想通过在名称和地址信息上创建一个哈希键来减少输入这个过程的数量。这样我可以为每个哈希键提供一条记录,从而减少 75% 的输入。而且我需要这个密钥随着时间的推移保持不变。

但是,由于此哈希键将作为我加入结果表的键,因此我需要它是唯一的。我可以将哈希键创建为持久列,并给它一个唯一的约束,但我担心碰撞的可能性很小。如果两个不同的名称和地址字符串可能产生相同的哈希输出,我仍然需要它们的唯一键。

即使这种情况不太可能发生,我也不高兴知道如果发生了,我就没有计划。

我还考虑过使用表的代理 ID,并使用 MIN(surrogateID) 分配一组名称和地址中的每条记录。但是,如果删除了与给定组的 MIN(surrogateID) 对应的记录,那么现在我的 ID 已更改。

我可以创建一个包含不同名称和地址的查找表,并为每个人提供一个简单的整数 ID。但我宁愿避免存储成本。

还有其他我可能不会考虑的选择吗?

0 投票
0 回答
24 浏览

hashbytes - Hashbyte 在 SSIS 中显示为 System.Byte[] 而不是 has 值

我已经为我的源表编写了一个 hashbytes 语句以在我的 SSIS 负载中使用。

hashbyte 在 SSMS 中有效,我可以看到预期值,但是当我复制到 SSIS OLE DB Source 时,它​​显示为 System.Byte []。是否有一个原因?

hashbytes('SHA1', ISNULL(cast([EmployeeID] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([FirstName] as varchar(100)),'UNKNOWN')+'| '+ ISNULL(cast([LastName] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([Title] as varchar(100)),'UNKNOWN')+'|'+ ISNULL( cast([BirthDate] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([HireDate] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([Address ] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([City] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([Region] as varchar( 100)),'UNKNOWN')+'|'+ ISNULL(cast([PostalCode] as varchar(100)),'UNKNOWN')+'|'+ ISNULL(cast([HomePhone] as varchar(100)), '未知')) 作为 HASHCOLUMNSource

0 投票
1 回答
118 浏览

php - 在 PHP 中生成哈希以匹配 T-SQL HASHBYTES 输出

我需要在 PHP 中生成一个与T-SQL中HASHBYTES函数的输出相匹配的哈希。

以下是最初用于在 T-SQL 中生成哈希的代码:

对于输入“pete1234matt”,我们得到以下输出:

现在这是我编写的 PHP 代码,我采用提供的和输入,然后将它们编码为 UTF-16LE,就像我期望转换为 nvarchar 所做的那样。那是对的吗?

我倾向于盐存在编码问题,但不能完全弄清楚我哪里出错了。任何对字符编码和 T-SQl 有更多了解的人都可以在这里帮帮我!

0 投票
0 回答
81 浏览

sql-server - SQL Azure HashBytes 性能 - 差异很大

直到几天前,我们在 SQL Azure 中运行的 T-SQL 代码为临时表值生成 MD5 速度很快(在 Business Critical Gen 5, 2 VCores DB 上每十万秒几秒)。最近,我们从日志中注意到,在多个客户端数据库和我们的测试中,存在巨大的差异,导致频繁超时。这是生成 MD5 和 SHA2 的示例代码(尽管 MD5 是我们的生产要求)。

注意使用 NEWID() 来生成 GUID,所以我不认为缓存是我们测试中的问题。

以下是一些测试运行: Run 1:SHA2 45 秒,MD5 39 秒 Run 2:SHA2 4 秒,MD5 3 秒 Run 3:SHA2 34 秒,MD5 38 秒 Run 4:SHA2 9 秒,MD5 9 秒

在这些测试期间,没有其他进程正在针对数据库运行。我在 Azure 门户中看到 CPU (90%) 和 SQL Server 进程 (99%) 似乎相关的峰值。

知道这里可能发生了什么变化吗?或者关于我们如何获得更可预测的性能的其他想法?谢谢你。

0 投票
0 回答
94 浏览

sql - SQL Checksum_agg(Checksum(columns)) 为不同的数据集返回相同的值

我在一个数据库中有多个表,用于与脱机访问数据库进行比较,并查看该脱机访问数据库是否与这些预定表中的任何一个匹配。这些表在结构上都是相同的,但包含不同的值;我将通过仅使用一列“设定点”来简化它。

我正在使用这段代码:

创建我在数据库中的表的校验和,然后将它们相互比较。这一直很好,直到我比较了 [Setpoint] 中具有完全不同值的两个表并得到相同的校验和:

(两个表的其余部分共享相同的值)

现在我真的不明白这两个完全不同的数据集如何返回不同的校验和,但我现在使用 CHECKSUM_AGG(Cast(HASHBYTES()as int) 来获取我的校验和,并且我正在提出唯一值:

结果:

这是一个合适的解决方案吗?这会为表格返回不同的结果吗?我错过了什么吗?有没有更好的方法将表中的多个列与其他表进行比较?

0 投票
1 回答
47 浏览

mysql - 如何将两个不同数据库(MySQL、SQL SERVER)之间的 TEXT 字段与哈希值进行比较?

我正在尝试快速比较两个独立应用程序中的大数据(一个在 MySQL 上,另一个在 SQL SERVER 上)。

myData字段在两个数据库中都是TEXT字段,我想看看它们之间这个字段的值是否发生了变化(myData 可以是几十万或几百万个字符长)

在 MySQL 中:

在 SQL 服务器中:

我的哈希输出与两个数据库中的相同TEXT字段值不匹配。我怎样才能让它这样做?

以下是我迄今为止的假设:

  1. MySQL 将散列 TEXT,但 SQL-SERVER 不会(因此转换为 nvarchar)。
  2. MySQL 不允许转换为 nvarchar。
  3. 如果散列的输入类型不同,则输出将不同(在我的情况下,一个是 TEXT,另一个是 nvarchar)。

此外,如果使用 DB2 或 Oracle 而不是 SQL Server 会怎样?是否有一些简单的方法来解决这个问题(如果 q 的这一部分太模糊,很抱歉)?

0 投票
2 回答
270 浏览

sql-server - SQL 服务器中拉丁字符的 SHA1 值与雪花数据库的 SHA1 不匹配

我正在尝试匹配 SQL Server 和 Snowflake 中表中某些数据的 sha1 值。

我通过以下方式在 SQL 服务器中获得了拉丁字符的 sha1 -

这将返回 b753d636f6ee46bb9242d01ff8b61f715e9a88c3

Snowflake 中的 sha1 函数为同一个字符返回不同的值。

注意 - SQL Server 中的数据类型是 nvarchar,而 Snowflake 中的数据类型是带有默认排序规则的 varchar。对于英文字符,将 nvarchar 转换为 varchar 后 sha1 值匹配。但是,拉丁字符并非如此。

有没有办法匹配非英语字符的 sha1 值?我需要在 SQL Server 2017 及更低版本中获取值 '2b9cc8d86a48fd3e4e76e117b1bd08884ec9691d',因为它是 Oracle、Snowflake 和 Hive 等其他数据库返回的值。

谢谢

0 投票
2 回答
60 浏览

c# - SQL Uniqueidentifier 和 hashbytes 与 c# 不匹配

在 SQL Server 中使用 c# 创建哈希是不同的。为什么不一样?

这里的结果是ebb52fefab48f428b6ee03174276c8ade0b4ef1a

使用 SQL Server 和此代码:

结果是CC34B1E702F6E7FE0EE92ED4D5390BB4765B9A21

0 投票
2 回答
87 浏览

sql - 需要使用 Snowflake SHA1/标准 SHA1 函数的 SQL Server HASHBYTES SHA1 输出

我们正在将 SQL 服务器命令/脚本迁移到 Snowflake SQL,但遇到了这个特定的查询。我们一直在 SQL Server 中使用 HASHBYTES 函数将此字符串散列到 SHA1 算法。不幸的是,我们的 SQL 服务器命令的输出与雪花或任何其他转换器不匹配。

SQL 服务器代码:

SQL 服务器输出:

我们尝试在雪花中编写上述代码,如下所示:

雪花 SQL:

雪花输出:

我们使用任何其他标准 SHA1 转换器获得相同的输出,但现在我们需要与从 SQL 服务器 HASHBYTES 获得的值完全相同的值。