关于不推荐使用的功能(超过两部分列名称)的定义是
查询在列列表中使用了3部分或4部分名称。更改查询以使用符合标准的2部分名称。每次编译时发生一次。
我可以问这个功能的一些例子吗?
因为我有一些代码使用sql server的某些功能,例如:
Select xml.Item.value('[something]', 'varchar(20)') AS something from xml
将部分xml.Item.value(...)视为列列表中的3部分或4部分名称吗?
由于我只是手动浏览数据库中的商店程序来搜索这个已弃用的功能,有没有其他方法(如查询)在我的数据库中查找这些内容?
非常感谢
答案 0 :(得分:4)
以下是引用选项(但对于所有数据库对象都不相同):
1部分命名:tablename
(架构:已登录用户的默认架构(例如:dbo
),数据库:当前)
两部分命名:schemaname.tablename
(数据库当前)
3部分命名:servername.schemaname.tablename
4部分命名:linkedserver.servername.schemaname.tablename
对于您的示例,部分xml.Item.value(...)
不适用于3部分命名文化 - 因为value()
是从xml类型列或变量中检索值的方法。
对于第二部分,您可以使用此查询查找数据库中正在使用和运行的所有deprecated features -
SELECT OBJECT_NAME,counter_name,instance_name AS 'Deprecated Feature',cntr_value AS 'Number of Times Used'
FROM sys.dm_os_performance_counters WHERE OBJECT_NAME LIKE '%:Deprecated%' AND cntr_value > 0
ORDER BY 'Number of Times Used' DESC
脚注:根据Microsoft为什么要弃用该功能,这就是我所得到的 - 帮助优化器,减少混乱和标准化代码。
修改:关注link - 它对于识别已弃用的功能非常有用。现在,如果您想在stored procedure
中找到一组特定的文字/关键字,那么您可以尝试此处列出的任何方法 - link。