Partager via


Types de données et réplication

SQL Server Compact ne prend pas entièrement en charge tous les types de données SQL Server. En tant qu'Abonné aux publications SQL Server, SQL Server Compact doit convertir les types non pris en charge en types pris en charge.

Types de données pris en charge et mappage des types de données

Le tableau ci-dessous montre les mappages des types de données qui sont effectués lors de la réplication entre SQL Server et Microsoft SQL Server Compact 3.5. Le tableau répertorie les mappages pour chaque type de données SQL Server et décrit les restrictions et les comportements particuliers.

Type de données SQL Server Type de données SQL Server Compact

bigint

Bigint

binary(n)

binary(n)

bit

Bit

character(n)(synonyme : char(n))

national character(n) - ou - ntext

Si la longueur des données est inférieure ou égale à 4 000 caractères, la réplication SQL Server Compact mappe les données SQL Server character sur SQL Server Compact national character. Dans le cas contraire, elle mappe les données de type character sur SQL Server Compact ntext. Si la longueur des données ntext est supérieure à la longueur de la colonne character, la synchronisation échoue quand les données sont envoyées de SQL Server Compact vers SQL Server.

character varying(n)(synonyme : varchar(n))

national character varying - ou - ntext

Si la longueur des données est inférieure ou égale à 4 000 caractères, la réplication SQL Server Compact mappe les données SQL Server character varying sur SQL Server Compact national character varying ; dans le cas contraire, elle mappe les données de type character varying sur SQL Server Compact ntext. Si la longueur des données ntext est supérieure à la longueur de la colonne character varying, la synchronisation échoue quand les données sont envoyées de SQL Server Compact vers SQL Server.

character varying(MAX)(synonyme : varchar(MAX))

ntext

Si la longueur des données character varying(MAX) est supérieure à la longueur de la colonne ntext, la synchronisation échoue quand les données sont envoyées de SQL Server vers SQL Server Compact.

Computed Columns

Non pris en charge.

Si vous utilisez l'Assistant Publication et que vous indiquez que des abonnements SQL Server Compact seront utilisés, toutes les colonnes de type de données Computed Column sont partitionnées verticalement en dehors de la publication. Si vous n'utilisez pas l'Assistant, vous devez exclure de la publication les colonnes ayant ce type de données.

date

Valeur nchar(10) de la forme 'AAAA-MM-JJ'

ms171931.note(fr-fr,SQL.100).gifRemarque :
SQL Server Compact stocke les caractères larges. La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

datetime

Datetime

datetime2

Valeur nvarchar(27) de la forme 'AAAA-MM-JJ hh:mm:ss.nnnnnnn'

ms171931.note(fr-fr,SQL.100).gifRemarque :
SQL Server Compact stocke les caractères larges. La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

datetimeoffset

Valeur nvarchar(34) de la forme 'AAAA-MM-JJ hh:mm:ss.nnnnnnn [+/-] hh:mm'

ms171931.note(fr-fr,SQL.100).gifRemarque :
SQL Server Compact stocke les caractères larges. La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

decimal

Non pris en charge. Utilisez le type numeric.

double precision

double precision

float

float

geography

image

ms171931.note(fr-fr,SQL.100).gifRemarque :
La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

geometry

image

ms171931.note(fr-fr,SQL.100).gifRemarque :
La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

image

image

integer(synonyme : int)

integer

money

money

national character(n)(synonyme : nchar(n))

national character(n)

national character varying(n)(synonyme : nvarchar(n))

national character varying(n)

national character varying(MAX)(synonyme : nvarchar(MAX))

ntext

Si la longueur des données national character varying(MAX) est supérieure à la longueur de la colonne ntext, la synchronisation échoue quand les données sont envoyées de SQL Server vers SQL Server Compact.

ntext

ntext

numeric(synonymes : decimal, dec)

numeric

real

Real

smalldatetime

datetime

Si la précision des données datetime est supérieure à la précision de la colonne smalldatetime, la synchronisation échoue quand les données sont envoyées de SQL Server Compact vers SQL Server.

smallint (int 2)

smallint (int 2)

smallmoney

money

Si la précision des données money est supérieure à la précision de la colonne smallmoney, la synchronisation échoue quand les données sont envoyées de SQL Server Compact vers SQL Server.

sql_variant

ntext

Si des données binaires existent dans la colonne sql_variant, elles doivent avoir un nombre d'octets pair, sinon une erreur de conversion se produit.

text

ntext

Si la longueur des données text est supérieure à 1 073 741 823 caractères, la synchronisation échoue quand les données sont envoyées de SQL Server vers SQL Server Compact.

time

Valeur nvarchar(16) de la forme 'hh:mm:ss.nnnnnnn'

ms171931.note(fr-fr,SQL.100).gifRemarque :
SQL Server Compact stocke les caractères larges. La prise en charge de la conversion pour ce type a été fournie par la version SQL Server Compact 3.5 SP1.

timestamp

Non pris en charge.

Si vous utilisez l'Assistant Publication et que vous indiquez que des abonnements SQL Server Compact seront utilisés, toutes les colonnes de type de données timestamp sont partitionnées verticalement en dehors de la publication. Si vous n'utilisez pas l'Assistant, vous devez exclure de la publication les colonnes ayant ce type de données. Si la colonne timestamp/rowversion n'est pas partitionnée verticalement, les données de la colonne ne sont pas répliquées.

tinyint

tinyint

uniqueidentifier

uniqueidentifier

varbinary(n)

varbinary(n)

varbinary(MAX)

image

Si la longueur des données varbinary(MAX) est supérieure à la longueur de la colonne image, la synchronisation échoue quand les données sont envoyées de SQL Server vers SQL Server Compact.

varchar

Voir character varying

XML

ntext

Quand cela est possible, choisissez des types de données qui sont pris en charge à la fois par SQL Server et par SQL Server Compact, de façon à ce que la réplication n'ait pas à effectuer de mappages de données. Quand ce n'est pas possible, votre application doit valider les valeurs stockées dans la base de données SQL Server Compact pour garantir que la réplication peut mapper ces valeurs entre SQL Server et SQL Server Compact.

Les applications existantes qui ne prennent pas en charge de manière native date, datetime2, datetimeoffset et time doivent gérer les données mappées à des types de données compatibles tels que nchar et nvarchar. Pour plus d'informations sur les types de données SQL Server, consultez Types de données dans la documentation en ligne de SQL Server.

Restrictions des types de données

Les restrictions suivantes s'appliquent aux Abonnés SQL Server Compact :

  • Index
    Vous ne pouvez pas publier une table ayant un index sur des colonnes de type varchar (MAX), nvarchar(MAX), varbinary(MAX) et XML. La création de l'abonnement SQL Server Compact échoue parce que ces types de colonnes sont mappés sur les types ntext ou image, et qu'une clé primaire ne peut pas être créée sur une colonne de type ntext ou image.
  • Colonnes d'identité
    Les colonnes d'identité de SQL Server Compact doivent avoir le type de données integer (int 4) ou bigint (int 8). Les colonnes d'identité de SQL Server Compact ne peuvent pas avoir les types de données smallint, tinyint, decimal ni numeric. Si vous vous abonnez à une publication ayant une colonne d'identité d'un autre type que integer (int 4) ou bigint (int 8), la création de cet abonnement échoue dans SQL Server Compact.
    SQL Server Compact vous permet de modifier les valeurs de départ et d'incrément côté Abonné au moyen de l'instruction ALTER TABLE table_name ALTER COLUMN column_name IDENTITY (seed,increment). Cela vous permet de gérer manuellement les plages d'identité. Cependant, si la publication comprend une colonne d'identité et que la plage d'identité doit être gérée par le serveur de publication, ne modifiez pas les valeurs de départ et d'incrément au niveau de l'abonné. Si vous spécifiez une valeur de départ qui est supérieure à la plage d'identité attribuée, SQL Server Compact renvoie une erreur quand vous tentez d'insérer un nouvel enregistrement dans la table. Lors de la synchronisation suivante, le serveur de publication corrige le problème en attribuant à votre abonné une nouvelle plage d'identité.
  • Types de données non pris en charge
    Lors de l'abonnement à une publication SQL Server 2005, les types de données computed column, timestamp, date, time, hierarchyid, filestream et utcdatetime ne sont pas pris en charge.
  • Types de données CHAR et NTEXT dans SQL Server et SQL Server Compact
    SQL Server autorise un type de données CHAR plus grand que le type de données CHAR pour SQL Server Compact. Pour la réplication de son contenu, ce type de données CHAR plus grand est converti en type NTEXT dans SQL Server Compact. Bien que SQL Server et SQL Server Compact autorisent la modification du type de données d'une colonne CHAR, aucun des deux ne permet la modification du type de données d'une colonne NTEXT. Par conséquent, même s'il est possible de modifier un type de données CHAR plus grand sur le serveur SQL Server, la modification échouera au niveau de SQL Server Compact car ce n'est plus un type de données CHAR.
  • Types de données NTEXT ou IMAGE
    Si une colonne est mappée sur ntext et que SQL Server change le type de données pour la même colonne en type char, nchar, etc., la colonne de la base de données SQL Server Compact conserve le type ntext jusqu'à la réinitialisation de l'Abonné.

Voir aussi

Concepts

Types de données et RDA

Autres ressources

Mappages des types de données managées (SQL Server Compact)

Aide et informations

Obtention d'aide (SQL Server Compact 3.5 Service Pack 1)