sys.tables(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 Warehouse

SQL Server 데이터베이스의 각 사용자 테이블에 대한 행을 반환합니다.

열 이름 데이터 형식 설명
<inherited columns> 이 뷰가 상속하는 열 목록은 sys.objects(Transact-SQL)를 참조하세요.
lob_data_space_id int 0이 아닌 값은 이 테이블의 BLOB(Binary Large Object) 데이터를 보관하는 데이터 공간(파일 그룹 또는 파티션 구성표)의 ID입니다. LOB 데이터 형식의 대표적인 예는 varbinary(max), varchar(max), geography 또는 xml입니다.

0 = 테이블에 LOB 데이터가 없습니다.
filestream_data_space_id int FILESTREAM 파일 그룹 또는 FILESTREAM 파일 그룹으로 구성된 파티션 구성표의 데이터 공간 ID입니다.

FILESTREAM 파일 그룹의 이름을 보고하려면 SELECT FILEGROUP_NAME (filestream_data_space_id) FROM sys.tables 쿼리를 실행합니다.
sys.tables 에 대한 다음 보기에 조인할 수 있습니다 filestream_data_space_id = data_space_id.
- sys.filegroups
- sys.partition_schemes
- sys.indexes
- sys.allocation_units
- sys.fulltext_catalogs
- sys.data_spaces
- sys.destination_data_spaces
- sys.master_files
- sys.database_files
- backupfilegroup (조인 켜기 filegroup_id)
max_column_id_used int 이 테이블에서 사용한 최대 열 ID입니다.
lock_on_bulk_load bit 테이블이 대량 로드에 잠겨 있습니다. 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하세요.
uses_ansi_nulls bit 데이터베이스 옵션을 ON사용하여 SET ANSI_NULLS 테이블을 만들었습니다.
is_replicated bit 1 = 테이블은 스냅샷 복제본(replica)tion 또는 트랜잭션 복제본(replica)tion을 사용하여 게시됩니다.
has_replication_filter bit 1 = 테이블에 복제본(replica) 필터가 있습니다.
is_merge_published bit 1 = 병합 복제본(replica)tion을 사용하여 테이블이 게시됩니다.
is_sync_tran_subscribed bit 1 = 즉시 업데이트 구독을 사용하여 테이블을 구독합니다.
has_unchecked_assembly_data bit 1 = 테이블에는 마지막 ALTER ASSEMBLY동안 정의가 변경된 어셈블리에 따라 달라지는 지속형 데이터가 포함되어 있습니다. 다음에 성공한 DBCC CHECKDB 후 0으로 다시 설정됩니다.DBCC CHECKTABLE
text_in_row_limit int 행의 텍스트에 허용되는 최대 바이트입니다.

0 = Text in row 옵션이 설정되지 않았습니다. 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하세요.
large_value_types_out_of_row bit 1 = 큰 값 유형은 행 밖에 저장됩니다. 자세한 내용은 sp_tableoption(Transact-SQL)을 참조하세요.
is_tracked_by_cdc bit 1 = 테이블에 변경 데이터 캡처가 설정되어 있습니다. 자세한 내용은 sys.sp_cdc_enable_table(Transact-SQL)을 참조하세요.
lock_escalation tinyint 테이블에 대한 옵션의 LOCK_ESCALATION 값입니다.

0 = TABLE
1 = DISABLE
2 = AUTO
lock_escalation_desc nvarchar(60) 표의 lock_escalation 옵션에 대한 텍스트 설명입니다. 가능한 값은 다음과 TABLEAUTODISABLE같습니다.
is_filetable bit 1 = Table이 FileTable입니다.

FileTables 기능에 대한 자세한 내용은 FileTables(SQL Server)를 참조하세요.

적용 대상: SQL Server 2012(11.x) 이상 버전 및 Azure SQL Database
is_memory_optimized bit 가능한 값은 다음과 같습니다.

0 = 메모리가 최적화되지 않았습니다.
1 = 메모리가 최적화되었습니다.

값 0이 기본값입니다.

메모리 최적화 테이블은 메모리 내 사용자 테이블로, 스키마는 다른 사용자 테이블과 유사한 디스크에 유지됩니다. 메모리 최적화 테이블은 고유하게 컴파일된 저장 프로시저에서 액세스할 수 있습니다.

적용 대상: SQL Server 2014(12.x) 이상 버전 및 Azure SQL Database.
durability tinyint 가능한 값은 다음과 같습니다.

0 = SCHEMA_AND_DATA
1 = SCHEMA_ONLY

0 은 기본값입니다.

적용 대상: SQL Server 2014(12.x) 이상 버전 및 Azure SQL Database
durability_desc nvarchar(60) 가능한 값은 다음과 같습니다.

SCHEMA_ONLY
SCHEMA_AND_DATA

SCHEMA_AND_DATA 은 테이블이 지속성 메모리 내 테이블임을 나타냅니다. SCHEMA_AND_DATA 는 메모리 최적화 테이블의 기본값입니다. 값 SCHEMA_ONLY 은 메모리 최적화 개체를 사용하여 데이터베이스를 다시 시작할 때 테이블 데이터가 유지되지 않음을 나타냅니다.

적용 대상: SQL Server 2014(12.x) 이상 버전 및 Azure SQL Database
temporal_type tinyint 테이블 형식을 나타내는 숫자 값:

0 = NON_TEMPORAL_TABLE
1 = HISTORY_TABLE (temporal 테이블과 연결됨)
2 = SYSTEM_VERSIONED_TEMPORAL_TABLE

적용 대상: SQL Server 2016(13.x) 이상 버전 및 Azure SQL Database
temporal_type_desc nvarchar(60) 테이블 형식에 대한 텍스트 설명:

NON_TEMPORAL_TABLE
HISTORY_TABLE
SYSTEM_VERSIONED_TEMPORAL_TABLE

적용 대상: SQL Server 2016(13.x) 이상 버전 및 Azure SQL Database
history_table_id int is temporal_type 또는 is, 2기본 temporal 테이블에 대 한 기록 데이터를 포함하는 테이블의 반환object_id, 그렇지 않으면 반환 합니다NULL.ledger_type2

적용 대상: SQL Server 2016(13.x) 이상 버전 및 Azure SQL Database
is_remote_data_archive_enabled bit 테이블이 Stretch를 사용하도록 설정했는지 여부를 나타냅니다.

0 = 테이블이 Stretch를 사용하도록 설정되지 않았습니다.
1 = 테이블이 Stretch를 사용하도록 설정했습니다.

자세한 내용은 Stretch Database를 참조하십시오.

적용 대상: SQL Server 2016(13.x) 이상 버전 및 Azure SQL Database
is_external bit 테이블이 외부 테이블임을 나타냅니다.

0 = 테이블이 외부 테이블이 아닙니다.
1 = 테이블이 외부 테이블입니다.

적용 대상: SQL Server 2016(13.x) 이상 버전, Azure SQL Database 및 Azure Synapse Analytics
history_retention_period int 에 지정된 단위의 temporal 기록 보존 기간 기간을 나타내는 숫자 값입니다 history_retention_period_unit.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
history_retention_period_unit int 임시 기록 보존 기간 단위의 형식을 나타내는 숫자 값입니다.

-1: INFINITE
0: SECOND
1: MINUTE
2: HOUR
3: DAY
4: WEEK
5: MONTH
6: YEAR

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
history_retention_period_unit_desc nvarchar(10) 임시 기록 보존 기간 단위의 형식에 대한 텍스트 설명입니다.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
is_node bit 1 = 그래프 노드 테이블입니다.
0 = 그래프 노드 테이블이 아닙니다.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
is_edge bit 1 = 그래프 에지 테이블입니다.
0 = 그래프 에지 테이블이 아닙니다.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database
data_retention_period int 에 지정된 단위로 데이터 보존 기간기간을 나타내는 숫자 값입니다data_retention_period_unit.

적용 대상: Azure SQL Edge‘만’
data_retention_period_unit int 데이터 보존 기간 단위의 형식을 나타내는 숫자 값입니다.

-1: INFINITE
0: SECOND
1: MINUTE
2: HOUR
3: DAY
4: WEEK
5: MONTH
6: YEAR

적용 대상: Azure SQL Edge‘만’
data_retention_period_unit_desc nvarchar(10) 데이터 보존 기간 단위의 형식에 대한 텍스트 설명입니다.

INFINITE
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
YEAR

적용 대상: Azure SQL Edge‘만’
ledger_type tinyint 숫자 값은 테이블이 원장 테이블인지를 나타냅니다.

0 = NON_LEDGER_TABLE
1 = HISTORY_TABLE (updatable 원장 테이블과 연결됨)
2 = UPDATABLE_LEDGER_TABLE
3 = APPEND_ONLY_LEDGER_TABLE

데이터베이스 원장에 관한 자세한 내용은 원장을 참조하세요.

적용 대상: SQL Server 2022(16.x) 이상 버전 및 Azure SQL Database
ledger_type_desc nvarchar(60) 열의 값에 ledger_type 대한 텍스트 설명입니다.

NON_LEDGER_TABLE
HISTORY_TABLE
UPDATABLE_LEDGER_TABLE
APPEND_ONLY_LEDGER_TABLE

적용 대상: SQL Server 2022(16.x) 이상 버전 및 Azure SQL Database
ledger_view_id int ledger_type IN (2, 3) 원장 뷰를 반환 object_id 하면 그렇지 않으면 .NULL

적용 대상: SQL Server 2022(16.x) 이상 버전 및 Azure SQL Database
is_dropped_ledger_table bit 삭제된 원장 테이블을 나타냅니다.

적용 대상: SQL Server 2022(16.x) 이상 버전 및 Azure SQL Database

사용 권한

카탈로그 뷰에서 메타데이터의 표시 유형은 사용자가 소유하거나 사용자에게 일부 권한이 부여된 보안 개체로 제한됩니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

예제

A. 기본 키 없이 모든 사용자 테이블 반환

다음 예제에서는 기본 키가 없는 모든 사용자 테이블을 반환합니다.

SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name
FROM sys.tables
WHERE OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') = 0
ORDER BY schema_name, table_name;
GO

다음 예에서는 관련 임시 데이터를 노출하는 방법을 알 수 있습니다.

적용 대상: SQL Server 2016(13.x) 이상 버전 및 Azure SQL Database.

SELECT T1.object_id,
    T1.name AS TemporalTableName,
    SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
    T2.name AS HistoryTableName,
    SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,
    T1.temporal_type_desc
FROM sys.tables T1
LEFT JOIN sys.tables T2
    ON T1.history_table_id = T2.object_id
ORDER BY T1.temporal_type DESC;

C. 임시 기록 보존에 대한 정보 나열

다음 예제에서는 임시 기록 보존 관련 정보를 노출하는 방법을 알 수 있습니다.

적용 대상: SQL Server 2017(14.x) 이상 버전 및 Azure SQL Database.

SELECT DB.is_temporal_history_retention_enabled,
    SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
    T1.name AS TemporalTableName,
    SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,
    T2.name AS HistoryTableName,
    T1.history_retention_period,
    T1.history_retention_period_unit_desc
FROM sys.tables T1
OUTER APPLY (
    SELECT is_temporal_history_retention_enabled
    FROM sys.databases
    WHERE name = DB_NAME()
) DB
LEFT JOIN sys.tables T2
    ON T1.history_table_id = T2.object_id
WHERE T1.temporal_type = 2;