К вашему сведению: публикуя это здесь, я не могу зарегистрироваться на 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 использует строчные буквы для возвращаемых столбцов. Когда вы создаете SSDT-проект с этими процессами, создайте флаги, например. «Имя» как случай несоответствия.
Вы можете отключить проверку регистра в проекте SSDT, но я бы предпочел, чтобы SQLCop соответствовал регистру, используемому SQL Server для столбцов своих системных представлений и функций.
Вторичная проблема с тем же запросом -
FROM master..sysdatabases As D
Опять же, это работает просто отлично из-за способа, которым SQL Server разрешает системные представления, но он помечается SSDT, поскольку пропущенная схема подразумевает, что dbo и sysdatabase находятся в схеме sys, по крайней мере, начиная с SQL Server 2005.
Возможно, большее беспокойство вызывает то, что системные базы данных устарели. Базы данных IIUC могут быть заменой.
Надеясь, что Джордж все еще слушает на этом канале!