我需要通过使用相等长度的随机字符串更改所有文本值来混淆SQL Server数据库:
qwert -> vno3w
a123456 -> vn58wof
我无法在UPDATE
中使用过程或功能,而某些字符串可能包含数千个符号,因此GUID
不是变体。
我发现的最好的是
declare @BinaryData varbinary(max)
, @CharacterData varchar(max)
, @Length int = 2048
set @BinaryData=crypt_gen_random (@Length)
set @CharacterData=cast('' as xml).value('xs:base64Binary(sql:variable("@BinaryData"))', 'varchar(max)')
原因是检查数据库上的新组件性能如生产(客户端不给我们备份而不删除像这样的真实用户数据)。 在我目前的情况下,外键不是问题。
请帮忙吗?
答案 0 :(得分:0)
SELECT STUFF((SELECT '' + symbols FROM (
SELECT CHAR(
CASE WHEN r between 0 and 9 THEN 48
WHEN r between 10 and 35 THEN 55
ELSE 61 END + r) symbols
FROM
master..spt_values
CROSS JOIN
(SELECT CAST(RAND(ABS(CHECKSUM(NEWID()))) *61 as int) r) a WHERE type = 'P' AND number < 3333) symbols
FOR XML PATH('')) ,1,1,'') AS RandText