SQL Server 中标识符的尾随美元符号“$”有何意义?

Eva*_*oll 6 sql-server naming-convention database-internals

转储一些内部视图,例如sys.system_objects在此问题中完成的我看到某些标识符以美元符号结尾$

CREATE VIEW sys.system_objects AS
    -- cutout
    FROM sys.sysschobjs$ o -- XXX: HERE
    LEFT JOIN sys.syspalnames n
    -- not relevant
Run Code Online (Sandbox Code Playgroud)

而且,这也有效

SELECT * FROM sys.sysschobjs$;
Run Code Online (Sandbox Code Playgroud)

即使只是按照惯例,这里的规则是什么?我应该在我自己的代码中使用它吗?

搜索我看到很多关于 Excel(无关)和 Money 文字(也无关)的内容。

我发布了另一个我认为无关的问题,但我相信这个终端$会对此有更多的了解。请随意检查该问题以获取一些混淆的示例

Sea*_*ser 10

即使只是按照惯例,这里的规则是什么?

没有什么可以阻止您$在代码中使用 a ……不过,通常不赞成使用保留值。你会看到大量的内部项目将使用一个$,一个%%%###。我不会在我的用户代码中使用所有这些。

我应该在我自己的代码中使用它吗?

看上面。

倾销一些内部观点 [...]

您将看到其他各种项目,例如 OPENROWSET 或 OPENTABLE。我会让你免于另一个问题,没有办法看到那个定义。

您可以将动态管理视图 (DMV) 视为采用内存结构并使其成为行集...实际上这就是正在执行的操作。内部基表(保存有关数据库对象的元数据)和 DMV(位于内存结构中)之间存在差异。

DMV 对您有帮助,内部基表不会很有帮助,因为您不会在表本身或其中的值上找到太多(如果有)文档。

您能否描述内部使用的 $、% 或 %%、# 或 ## 之间的约定?

不,我也不会担心,因为它对您没有实际影响。

当您说“不,没有办法看到该定义”时,您指的是 sys.sysschobjs$ 的定义

视情况而定,您是否看到OPENTABLEOPENROWSET在我上面提到的那个定义中?如果没有,那么您可能可以通过 DAC 或 DAC + 单用户模式连接查看基表。

你会怎么称呼sysschobjs$你说“内部项目”是微软用语中最具体的名称?

我将其称为内部基本元数据表。你可以随心所欲地称呼它,就像“汽车”也被称为“汽车”一样。

您描述了 DMV(我相信我理解)和我也相信我理解的基本表,但没有描述以 $ 结尾的内部项目或它们如何关联 DMV 和基本表。

有些会以 $ 结尾,有些不会,有些会以 # 结尾,有些则不会。就像我上面说的,你会发现使用了各种各样的物品。没有硬性规定。例如,您看到该表以 . 结尾,$但有些函数也使用$. 同样,在一天结束时,它只是一个名字,而不是其他任何东西。

我相信你对这个waaaaaaaaay读得太多了。没有密码、握手或社会。