提问人:JonathonMinard 提问时间:9/6/2023 最后编辑:Thom AJonathonMinard 更新时间:9/6/2023 访问量:52
有没有办法检查视图是否对列名和表名使用了正确的大小写?
Is there a way to check if a view is using the correct casing for column and table names?
问:
默认情况下,SQL Server 不区分大小写。如果您有一个名为“Test”的表,则可以使用如下查询从中加载数据:
SELECT *
FROM teST
但是,如果数据库/服务器的排序规则区分大小写,则此查询将失败。
我们有一个应用程序,它将各种视图和其他 SQL 对象安装到用户的 SQL Server 数据库中。其中许多视图目前不适用于区分大小写的数据库,因为它们对某些列和表名使用了不正确的大小写。我们正在考虑更新查询以使用正确的大小写,但由于 SQL 对象之间的依赖关系,这在新的区分大小写的数据库中被证明是乏味的。
可以加快这一速度的一件事是,如果给定一个不区分大小写的数据库,并且已经包含了我们所有的 SQL 对象,我们可以很容易地检测到使用不正确大小写的视图。无论如何都可以这样做吗?例如,在运行上述查询时,我们是否可以指定一个选项或查询提示或任何内容来获得表“teST”无效或大小写不正确的错误?
答:
-2赞
Luis LL
9/6/2023
#1
你可以试试 sys.sql_dependencies
select *
from sys.views
where object_id not in (select object_id from sys.sql_dependencies)
评论
sys.sql_expression_dependencies
sys.tables
sys.schemas
sys.dm_exec_describe_first_result_set()
SELECT x = t1.a, y = t2.a FROM dbo.t1 JOIN dbo.t2