sys.tables(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
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 = 스냅샷 복제 또는 트랜잭션 복제를 사용하여 테이블이 게시됩니다. |
has_replication_filter |
bit | 1 = 테이블에 복제 필터가 있습니다. |
is_merge_published |
bit | 1 = 병합 복제를 사용하여 테이블이 게시됩니다. |
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 옵션에 대한 텍스트 설명입니다. 가능한 값은 TABLE , AUTO 및 DISABLE 입니다. |
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 | 있는 2 경우temporal_type , ledger_type 2 temporal 테이블에 대한 기록 데이터를 유지 관리하는 테이블의 반환 object_id 이고, 그렇지 않으면 반환됩니다NULL .적용 대상: 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
B. 임시 데이터 관련 테이블 나열
다음 예에서는 관련 임시 데이터를 노출하는 방법을 알 수 있습니다.
적용 대상: 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;