다음을 통해 공유


데이터 형식 매핑 및 고려 사항

클라이언트 및 서버 동기화의 경우 Sync Framework는 ADO.NET을 사용하여 SQL Server Compact 3.5 SP1의 올바른 데이터 형식으로 매핑할 수 있는 서버 데이터 형식을 지원합니다. 다음 표에서는 형식이 기본적으로 매핑되는 방식을 보여 줍니다. 처음 두 표에서는 ADO.NET 및 SQL Server Compact 간의 매핑을 보여 줍니다. 세 번째 표에서는 SQL Server 2008 및 SQL Server Compact 간의 매핑을 보여 줍니다. 이러한 매핑은 SQL Server의 두 버전이 동일한 데이터 형식을 많이 공유하기 때문에 가능합니다. 응용 프로그램에 다른 매핑이 필요한 경우에는 SyncSchemaColumn 개체를 사용하여 형식을 매핑합니다. 이 개체를 사용하는 방법에 대한 예제는 방법: 클라이언트 데이터베이스 초기화 및 테이블 스키마 사용을 참조하십시오.

ADO.NET 및 SQL Server Compact 간의 매핑

ADO.NET 데이터 형식 SQL Server Compact 데이터 형식

Boolean

bit

Byte

tinyint

Byte[]

varbinary

Char

nchar

DateTime

datetime

Decimal

numeric

Double

float

Int16

smallint

Int32

int

Int64

bigint

SByte

tinyint

Single

real

String

ntext

UInt16

smallint

UInt32

int

UInt64

bigint

SQL Server Compact 데이터 형식 ADO.NET 데이터 형식

bigint

Int64

binary

Byte[]

bit

Boolean

datetime

DateTime

float

Double

image

Byte[]

int

Int32

integer

Int32

money

Decimal

nchar

String

ntext

String

numeric

Decimal

nvarchar

String

real

Single

smallint

Int16

timestamp

Byte[]

tinyint

Byte

uniqueidentifier

Guid

varbinary

Byte[]

SQL Server 2008과 SQL Server Compact 3.5 간의 매핑

SQL Server 2008 데이터 형식 SQL Server Compact 3.5 SP 1 데이터 형식

bigint

bigint

binary(n)

varbinary

bit

bit

char(n)

nchar(n) 또는 ntext

데이터의 길이가 4,000자 이하이면 nchar이 사용되고, 그렇지 않으면 ntext가 사용됩니다.

CLR 사용자 정의 형식

지원되지 않습니다.

date

'YYYY-MM-DD' 형식의 nchar(27) 값 1

datetime

datetime

datetime2

'YYYY-MM-DD hh:mm:ss.nnnnnnn' 형식의 nchar(27) 값 1

datetimeoffset

'YYYY-MM-DD hh:mm:ss.nnnnnnn [+/-] hh:mm' 형식의 nvarchar(34) 값 1, 2

decimal

지원되지 않습니다. numeric을 사용하십시오.

double

double

float

float

geography

Sync Framework에서 변환되지 않습니다. 3

geometry

Sync Framework에서 변환되지 않습니다. 3

hierarchyid

Sync Framework에서 변환되지 않습니다. 3

image

image

int

int

money

money

nchar(n)

nchar(n)

ntext

ntext

nvarchar(n)

nvarchar(n)

nvarchar(max)

ntext

데이터의 길이가 ntext 열의 길이를 초과하면 동기화가 실패합니다.

numeric

numeric

real

real

smalldatetime

datetime

datetime 데이터의 자릿수가 smalldatetime 열의 자릿수를 초과하면 동기화가 실패합니다.

smallint

smallint

smallmoney

money

sql_variant

ntext

이진 데이터가 sql_variant 열에 있으면 이진 데이터의 바이트 수가 짝수여야 합니다. 그렇지 않으면 변환 오류가 발생합니다.

text

ntext

텍스트 데이터의 길이가 1,073,741,823자를 초과하면 동기화가 실패합니다.

time

'hh:mm:ss.nnnnnnn' 형식의 nvarchar(16) 값 1

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(max)

image

데이터의 길이가 이미지 열의 길이를 초과하면 동기화가 실패합니다.

varchar(n)

nvarchar(n) 또는 ntext

데이터의 길이가 4,000자 이하이면 nvarchar이 사용되고, 그렇지 않으면 ntext가 사용됩니다.

varchar(max)

ntext

데이터의 길이가 ntext 열의 길이를 초과하면 동기화가 실패합니다.

xml

ntext

1 이러한 날짜 및 시간 형식의 경우 다음과 같은 문제를 염두에 두십시오.

  • 서버 공급자가 ADO.NET 2.0을 실행하는 컴퓨터에 호스팅된 경우 이러한 형식이 서버에서 변환됩니다. 서버 공급자가 ADO.NET 2.0 SP1을 실행하는 컴퓨터에 호스팅된 경우에는 이러한 형식이 클라이언트에 전송된 다음 클라이언트에서 변환됩니다.

  • 클라이언트와 서버에서 값이 다르게 처리될 수 있습니다. 예를 들어, 서버에서는 datetime2 형식의 열에서 '0001-01-01 00:00:00.0000000' 및 '0001-01-01 12:00 AM' 값이 동일하지만 클라이언트에서는 두 값이 다른 문자열로 처리됩니다. 이 때문에 다음과 같은 결과가 발생합니다.

    • 이러한 형식의 열을 기본 키로 사용하면 안 됩니다.

    • 응용 프로그램에서 값의 형식 지정을 제어하지 않는 경우 클라이언트에서 이러한 형식의 열을 읽기 전용으로 처리해야 합니다.

2 서버 공급자가 ADO.NET 2.0 SP1을 실행하는 컴퓨터에 호스팅된 경우 변환이 성공하려면 클라이언트에서도 ADO.NET 2.0 SP1을 사용할 수 있어야 합니다. 클라이언트에서의 datetimeoffset 자동 변환은 .NET Compact Framework 2.0 SP1 또는 .NET Compact Framework 3.5에서 지원되지 않습니다.

3 이러한 형식을 동기화하려면 SyncSchemaColumn 개체를 사용하여 서버에서 이러한 형식을 varbinary(max) 또는 image로 변환하면 됩니다. 이 개체를 사용하는 방법에 대한 예제는 방법: 클라이언트 데이터베이스 초기화 및 테이블 스키마 사용을 참조하십시오.

매핑 고려 사항

Sync Framework는 데이터 형식에 대해 다음과 같은 동작을 수행합니다.

  • timestamp 데이터 형식이 있는 열의 데이터는 서버에서 복사되지 않습니다. timestamp 열은 동기화 중에 binary(8) 데이터 형식으로 매핑됩니다. 이는 timestamp 데이터가 일반적으로 만들어진 데이터베이스 내에서만 의미를 가지기 때문입니다.

  • ROWGUID 열은 서버에서 클라이언트 데이터베이스로 복사되지만 SQL Server ROWGUIDCOL 속성은 복사되지 않습니다. 이 속성을 설정하는 방법에 대한 예제는방법: 클라이언트 데이터베이스 초기화 및 테이블 스키마 사용을 참조하십시오.

  • ID 열은 서버에서 클라이언트 데이터베이스로 복사되지만 ID 시드 및 증분은 항상 0 및 1로 각각 설정됩니다. 이는 서버 데이터베이스에서 속성이 설정된 방법에 상관없이 항상 적용됩니다. SQL Server Compact ID 열에는 int 또는 bigint 데이터 형식이 있어야 합니다. SQL Server Compact ID 열에는 smallint, tinyint, decimal 또는 numeric 데이터 형식이 있을 수 없습니다. ID 열에 대한 자세한 내용은 분산 환경에 대해 적절한 기본 키 선택을 참조하십시오.

  • 계산 열은 다운로드 중에 클라이언트 데이터베이스로 복사되지만 계산 열 속성은 복사되지 않습니다. 업로드 시에 삽입 작업이 실패할 수 있으므로 양방향 및 업로드 시나리오에서는 계산 열을 사용하지 않는 것이 좋습니다. 이러한 문제가 발생하지 않도록 하려면 데이터를 검색하는 데 사용하는 SELECT 문의 WHERE 절에서 원하는 열을 제외하여 해당 열을 데이터에 포함되지 않도록 필터링합니다. 필터링에 대한 자세한 내용은 방법: 행 및 열 필터링을 참조하십시오.

참고 항목

개념

응용 프로그램 디자인 및 배포 고려 사항