为了解决问题,我有一个关于特定varchar(max)字段是否包含非打印 ASCII 字符(空格除外)的一次性问题。以下是我关于如何确定我们的生产数据库中是否存储了此类字符的简单想法。
SELECT TOP 10 [CaseNoteId]
,[CaseId]
,[CaseNote]
FROM [DB].[XY].[ReferralCaseNotes]
WHERE CaseNote LIKE ('%[' + CHAR(1) + '-' + CHAR(8) + CHAR(11) + CHAR(12) + CHAR(14) + '-' + CHAR(31) + CHAR(127) + ']%')
Run Code Online (Sandbox Code Playgroud)
我对实际运行这件事的犹豫源于在 LIKE 模式中使用通配符,有问题的表中有超过一百万条记录,该列缺少全文索引,这可能是一个详尽的搜索,因为我们不相信任何这样的角色存在。
我是新手。我如何估计运行此查询是否会对我们的生产系统造成重大负载?另外,有没有更好的方法来获取相同的信息?
可能的改进:
WITH(READPAST)提高我的表现吗?为什么?
有问题的数据库涉及敏感数据、政府和制定规则的安全人员。将备份恢复到不同的服务器很有意义,但纳税人的成本比任何意义都要高几个数量级。
如果答案是“别担心,你只是在做一个 SELECT”,那么我会说,“太棒了!”
sql-server ×1