sys.objects列[类型]怪异值'ST'


9

我在sys.objects中看到[Type]列的值很奇怪(未记录)。值为“ ST”,如下所示(注意,dbo.Record是用户表)

有人知道这个“ ST”值是什么意思吗?(这是在SQL Server 2014 Developer Edition中)

在此处输入图片说明


有趣。五月份,类似的问题发布到MSDN论坛上:sys.objects中的Type = ST是什么?。并且,那也与SQL Server 2014有关。尽管没有答案,但:-(
Solomon Rutzky

1
您是否正在使用任何可能相关的可选产品功能?
马丁·史密斯

我在SQL Server 2017中也遇到过这种情况。当我对服务器上的所有DB进行检查时,有数百个。
user3593990

Answers:


3

好吧,我不知道ST代表什么,但是根据命名约定,我不得不猜测它是某种系统生成的统计信息。

如果对象是模块,则可以检查是否有某种与该对象关联的文本,例如:

SELECT OBJECT_DEFINITION(613577224);

SELECT definition FROM sys.all_sql_modules
  WHERE object_id = 613577224;

您也可以尝试:

EXEC sp_help N'dbo._ST_OEA33...';

最后,您可以尝试在任何目录视图中强行发现此对象。该脚本尝试查找包含该object_id列等于该值的行的任何视图。

CREATE TABLE #v(v sysname);

DECLARE @sql nvarchar(max) = N'', @obj int = 613577224;

SELECT @sql += N'INSERT #v 
    SELECT DISTINCT ''sys.' + name + N''' 
      FROM sys.' + QUOTENAME(name) + N' 
      WHERE [object_id] = @obj;'
  FROM sys.all_views AS v
  WHERE EXISTS 
  (
    SELECT 1 
      FROM sys.all_columns AS c
      WHERE c.name = N'object_id' 
      AND c.[object_id] = v.[object_id]
  ); 

EXEC sys.sp_executesql @sql, N'@obj int', @obj;

SELECT v FROM #v;

DROP TABLE #v;

如果这没有任何效果,则可以将其扩展为int在所有目录视图中包括所有基于列的列,因为有时object_id值存储在名称不同的列中,例如referenced_major_idparent_object_id,此处的任何结果也可能产生线索。

SET NOCOUNT ON;

CREATE TABLE #v(v sysname);

DECLARE @sql nvarchar(max) = N'', @obj int = 613577224;

SELECT @sql += N'INSERT #v 
    SELECT DISTINCT ''sys.' + v.name + N''' 
      FROM sys.' + QUOTENAME(v.name) + N' 
      WHERE ' + QUOTENAME(c.name) + N' = @obj;'
  FROM sys.all_views AS v
  INNER JOIN sys.all_columns AS c
  ON v.[object_id] = c.[object_id]
  WHERE v.[schema_id] = 4
    AND c.[system_type_id] IN (56,127)
    AND v.name NOT IN (N'syscolumns')
    AND v.name NOT LIKE N'dm_fts_%'; 

EXEC sys.sp_executesql @sql, N'@obj int', @obj;

SELECT v FROM #v;

GO
DROP TABLE #v;

谢谢亚伦,我稍后再跑一些,然后报告。但是object_definition()并从sys.all_modules中选择*返回null或不返回。我还希望这与统计信息有关,根据统计信息的命名约定,WA_xxx表示“华盛顿”,_ST表示SEATTLE?:-)
jyao
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.