仅供参考:由于无法在LessThanDot上注册,因此在此处发布。不确定是否是我们公司的防火墙(不会感到惊讶!)
我开始将SQL Cop用作新项目质量控制的一部分。我将所有过程保存在SSDT项目中。我注意到,尽管项目构建正确,但由于大小写不同,它会标记许多带有警告的语句。一个例子是
[SQLCop].[test Old Backups]
...
Select @Output = @Output + 'Outdated Backup For '+ D.Name + Char(13) + Char(10)
FROM master..sysdatabases As D
Left Join msdb.dbo.backupset As B
On B.database_name = D.Name
当然,这很好,因为master设置为不区分大小写,但是sysdatabases视图对返回的列使用小写字母。当您使用这些procs构建SSDT项目时,请构建标记,例如“名称”作为大小写不匹配。
您可以在SSDT项目中禁用大小写检查,但是我宁愿看到SQLCop符合SQL Server在其系统视图和功能列中使用的大小写。
同一查询的次要问题是
FROM master..sysdatabases As D
同样,由于SQL Server解析系统视图的方式,这种方法工作得很好,但是由于省略的架构暗示dbo和sysdatabase在sys架构中(至少自SQL Server 2005起),因此它被SSDT标记。
也许更值得关注的是sysdatabases已过时。 IIUC sys.databases可能是替代品。
希望乔治仍在收听此频道!