是否有返回所有可用属性名称的函数或系统视图?
我正在寻找MSDN OBJECTPROPERTY 页面上未列出的“SYSTEMDATAACCESS”和“USERDATAACCESS” 。我添加了关于它们的评论,但我想知道是否还有其他我不知道的...鉴于它是 SQL,我希望它们可以在某处作为可查询的元数据使用,但找不到任何东西。元数据中的属性是否在某处?
编辑:虽然它与我的问题并不相关,但这是系统数据访问的示例用法。 select OBJECTPROPERTY(OBJECT_ID('sys.dm_db_stats_properties'), 'SYSTEMDATAACCESS')
不,甚至没有东西可以返回所有可用内置函数的名称(例如它
OBJECTPROPERTY
自己)。这些属性值被记录在案,
OBJECTPROPERTYEX
即使它们似乎也适用于OBJECTPROPERTY
并且可能应该在那里记录(返回类型是int
所以没有理由不应该在那里支持它们,并且使用该函数更方便需要来自 sql_variant 的强制转换。)对于完全未记录的属性值(例如
minlen
forINDEXPROPERTY
),我不知道有任何方法可以确定这些值。这是一个脚本,允许您使用
OBJECTPROPERTYEX
函数https://msdn.microsoft.com/en-us/library/ms188390.aspx查询所有记录的属性名称和属性值OBJECTPROPERTYEX
包含与 相同的所有属性OBJECTPROPERTY
,但返回SQL_Variant
类型而不是int
,因此具有更多选项,例如BaseType
which 将返回 achar(2)
。下面是 SQL 脚本,其中包含一些如何使用的示例:
要重新创建值列表:
粘贴回 Excel,然后在每行的单元格 D 中添加此公式以构建 Select SQL 语句:
=IF(ROW(A1)=1,"","UNION ALL ") & " SELECT [PropertyName] = N' "&A1&"',[PropertyAppliesToType] = N'"&B1&"',[PropertyDesc] = N'"&C1&"'"
将 D 列中的 Excel 公式结果复制/粘贴回 Notepad++,然后用“\t”查找/替换:“\r\n”,以便将所有内容放在一行中。