sql – INFORMATION_SCHEMA.ROUTINES中SPECIFIC_SCHEMA和ROUTINE_SCHEMA之间有什么区别?

informatION_SCHEMA.ROUTInes包含这两列:
SPECIFIC_SCHEMA: Specific name of the schema.
ROUTINE_SCHEMA: Name of the schema that contains this function.

technet doc

由于CATALOG和NAME的SPECIFIC_和ROUTINE_版本被定义为等效( – 目录的特定名称,该名称与ROUTINE_CATALOG.-)相同,但SCHEMA-

SPECIFIC_SCHEMA和ROUTINE_SCHEMA有什么区别?

解决方法

那有点像向后兼容性.

informatION_SCHEMA本身仅用于更容易地迁移服务器版本和简化.我将提供基于sql Server的示例.

您可能希望(或可能需要)使用sys.objects表,它们基本上提供了几乎所有由informatION_SCHEMA.ROUTInes传递的相同信息.实际上你需要使用它,如果你真的想知道一个程序的真正的模式名称 – 就像微软已经在自己的docs中所说的那样.但是如果你需要构建一个只需要一些基本信息的产品,如一个例程或者这样的东西,你不会去拿sys.objects它可能会从服务器版本更改为服务器版本.这使得它更难维护. informatION_SCHEMA在许多版本上基本保持不变.只有微小的变化才会被应用,而视图下的工作将被微软所改变.这意味着您有一个稳定的代码多年和许多不同的服务器版本.

这可能是事实,有两列具有相同的定义,因此内容相同.它与SPECIFIC_NAME和ROUTINE_NAME或SPECIFIC_CATALOG和ROUTINE_CATALOG相同.他们基本上是一样的,正如微软自己在他们的文档中所说的那样.

它可能是一个遗物,可能永远呆在那里,只是为了兼容其他DBMS代码或旧版本的sql Server本身.

顺便说一句,Postgres具有相同的两行,它们都包含相同的内容.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...