다음을 통해 공유


메타데이터 - 매개 변수 및 결과

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

이 항목에서는 날짜 및 시간 데이터 형식에 대한 IPD(구현 매개 변수 설명자) 및 IRD(구현 행 설명자) 필드에 반환되는 항목에 대해 설명합니다.

IPD 필드에 반환된 정보

IPD 필드에 다음 정보가 반환됩니다.

매개 변수 형식 date time smalldatetime Datetime datetime2 datetimeoffset
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_TYPE SQL_TYPE_DATE SQL_SS_TYPE_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time IRD의 smalldatetime, IPD의 datetime2 IRD의 datetime, IPD의 datetime2 datetime2 datetimeoffset
SQL_CA_SS_VARIANT_TYPE SQL_C_TYPE_DATE SQL_C_TYPE_BINARY SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_TIMESTAMP SQL_C_TYPE_BINARY
SQL_CA_SS_VARIANT_SQL_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_CA_SS_SERVER_TYPE 해당 없음 해당 없음 SQL_SS_TYPE_SMALLDATETIME SQL_SS_TYPE_DATETIME SQL_SS_TYPE_DEFAULT 해당 없음

값 범위에 불연속성이 있는 경우가 있습니다. 예를 들어 8,10..16에서는 9가 없습니다. 이러한 경우는 소수 부분 자릿수가 0보다 커서 소수점을 추가했을 때 발생합니다.

datetime2는 드라이버가 모든 SQL_TYPE_TIMESTAMP 값을 서버에 전송하기 위한 공통 형식으로 사용하므로 smalldatetimedatetime의 형식 이름으로 반환됩니다.

SQL_CA_SS_VARIANT_SQL_TYPE 새 설명자 필드입니다. 이 필드는 애플리케이션이 sqlvariant(SQL_SSVARIANT) 열 및 매개 변수와 연결된 값 형식을 지정할 수 있도록 IRD 및 IPD에 추가되었습니다.

SQL_CA_SS_SERVER_TYPE 애플리케이션이 SQL_TYPE_TYPETIMESTAMP 바인딩된 매개 변수의 값(또는 C 형식의 SQL_C_TYPE_TIMESTAMP SQL_SS_VARIANT)이 서버에 전송되는 방식을 제어할 수 있도록 하는 새로운 IPD 전용 필드입니다. SQLExecute 또는 SQLExecDirect가 호출될 때 SQL_DESC_CONCISE_TYPE SQL_TYPE_TIMESTAMP(또는 SQL_SS_VARIANT C 형식이 SQL_C_TYPE_TIMESTAMP 경우) SQL_CA_SS_SERVER_TYPE 값은 다음과 같이 매개 변수 값의 TDS(테이블 형식 데이터 스트림) 형식을 결정합니다.

SQL_CA_SS_SERVER_TYPE 값 SQL_DESC_PRECISION 유효한 값 SQL_DESC_LENGTH 유효한 값 TDS 형식
SQL_SS_TYPE_DEFAULT 0..7 19, 21..27 datetime2
SQL_SS_TYPE_SMALLDATETIME 0 19 smalldatetime
SQL_SS_TYPE_DATETIME 3 23 날짜/시간

SQL_CA_SS_SERVER_TYPE 기본 설정은 SQL_SS_TYPE_DEFAULT. SQL_DESC_PRECISION 및 SQL_DESC_LENGTH 설정은 위의 표에 설명된 대로 SQL_CA_SS_SERVER_TYPE 설정으로 유효성을 검사합니다. 이 유효성 검사에 실패하면 SQL_ERROR가 반환되고 SQLState 07006 및 "제한된 데이터 형식 특성을 위반했습니다"라는 메시지가 포함된 진단 레코드가 기록됩니다. SQL_CA_SS_SERVER_TYPE이 SQL_SS_TYPE DEFAULT 이외의 값으로 설정되고 DESC_CONCISE_TYPE이 SQL_TYPE_TIMESTAMP가 아닌 경우에도 이 오류가 반환됩니다. 이러한 유효성 검사는 설명자 일관성 유효성 검사가 발생할 때 수행됩니다. 예를 들면 다음과 같습니다.

  • SQL_DESC_DATA_PTR이 변경된 경우

  • 준비 또는 실행 시간에 SQLExecute, SQLExecDirect, SQLSetPos 또는 SQLBulkOperations를 호출하는 경우

  • 애플리케이션이 지연된 준비를 사용하지 않도록 설정한 상태에서 SQLPrepare를 호출하거나 준비되었지만 실행되지 않은 문에 대해 SQLNumResultCols, SQLDescribeCol 또는 SQLDescribeParam을 호출하여 지연되지 않은 준비를 강제하는 경우

SQLSetDescField를 호출하여 SQL_CA_SS_SERVER_TYPE 설정하는 경우 해당 값은 SQL_SS_TYPE_DEFAULT, SQL_SS_TYPE_SMALLDATETIME 또는 SQL_SS_TYPE_DATETIME 합니다. 그렇지 않은 경우 SQL_ERROR 반환되고 진단 레코드가 SQLState HY092 및 "잘못된 특성/옵션 식별자"라는 메시지와 함께 기록됩니다.

SQL_CA_SS_SERVER_TYPE 특성은 datetime 및 smalldatetime에서 지원하는 기능에 따라 달라지는 애플리케이션에서 사용할 수 있지만 datetime2는 사용할 수 없습니다. 예를 들어 datetime2에는 dateadddatediif 함수를 사용해야 하는 반면 datetimesmalldatetime은 산술 연산자도 허용합니다. 대부분의 애플리케이션은 이 특성을 사용할 필요가 없으며 해당 사용은 피해야 합니다.

IRD 필드에 반환된 정보

다음 정보가 IRD 필드에 반환됩니다.

열 유형 date time smalldatetime Datetime datetime2 datetimeoffset
SQL_DESC_AUTO_UNIQUE_VALUE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CASE_SENSITIVE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_CONCISE_TYPE SQL_TYPE_DATE SQL_SS_TIME2 SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TYPE_TIMESTAMP SQL_SS_TIMESTAMPOFFSET
SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE 0 SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP SQL_CODE_TIMESTAMP 0
SQL_DESC_DATETIME_INTERVAL_PRECISION 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_DISPLAY_SIZE 10 8,10..16 16 23 19, 21..27 26, 28..34
SQL_DESC_FIXED_PREC_SCALE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE SQL_FALSE
SQL_DESC_LENGTH 10 8,10..16 16 2 19, 21..27 26, 28..34
SQL_DESC_LITERAL_PREFIX ' ' ' ' ' '
SQL_DESC_LITERAL_SUFFIX ' ' ' ' ' '
SQL_DESC_LOCAL_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_OCTET_LENGTH 6 12 4 8 16 20
SQL_DESC_PRECISION 0 0..7 0 3 0..7 0..7
SQL_DESC_SCALE 0 0..7 0 3 0..7 0..7
SQL_DESC_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE SQL_PRED_SEARCHABLE
SQL_DESC_TYPE SQL_DATETIME SQL_SS_TIME2 SQL_DATETIME SQL_DATETIME SQL_DATETIME SQL_SS_TIMESTAMPOFFSET
SQL_DESC_TYPE_NAME date time smalldatetime datetime datetime2 datetimeoffset
SQL_DESC_UNSIGNED SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE SQL_TRUE

참고 항목

메타데이터(ODBC)