ストアド プロシージャを使用するsp_msforeachtableと、データベース内のすべてのテーブルに対してスクリプトを実行できます。
ただし、そこから除外したいシステムテーブルがあります。IsSystemTable本能的に、私はプロパティまたはをチェックしますIsMSShipped。これらは期待どおりに機能しません-たとえば、次のようなテーブルがあります__RefactorLog:

しかし、これがシステム テーブルか MS Shipped テーブルかをクエリすると、SQL Server は、システム テーブルであるとレポートするテーブルはありません。
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsSystemTable'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsSystemTable:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
と
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsMSShipped'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsMSShipped:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
テーブル (SSMS 内) のプロパティを調べると、テーブルはシステム オブジェクトとしてマークされています。ただし、ようなオブジェクトプロパティIsSystemObjectは存在しません(AFAIK)。
オブジェクト プロパティとは別に、テーブルがシステム オブジェクトであるかどうかを確認するにはどうすればよいですか? テーブルがシステムオブジェクトであるかどうかをSSMSはどのようにチェックしますか?