Types de données et réplication

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 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 Edition 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 Edition. 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 Edition

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 Edition mappe les données SQL Server character sur SQL Server Compact Edition national character. Dans le cas contraire, elle mappe les données de type character sur SQL Server Compact Edition 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 Edition 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 Edition mappe les données SQL Server character varying sur SQL Server Compact Edition national character varying ; dans le cas contraire, elle mappe les données de type character varying sur SQL Server Compact Edition 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 Edition 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 Edition.

Computed Columns

Non pris en charge.

Si vous utilisez l'Assistant Publication et que vous indiquez que des abonnements SQL Server Compact Edition 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.

datetime

datetime

decimal

Non pris en charge. Utilisez le type numeric.

double precision

double precision

float

float

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 Edition.

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 Edition 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 Edition 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 à SQL Server Compact Edition.

timestamp

Non pris en charge.

Si vous utilisez l'Assistant Publication et que vous indiquez que des abonnements SQL Server Compact Edition 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.

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 Edition.

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 Edition, 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 Edition pour garantir que la réplication peut mapper ces valeurs entre SQL Server et SQL Server Compact Edition.

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 Edition :

  • 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 Edition é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 Edition doivent avoir le type de données integer (int 4) ou bigint (int 8). Les colonnes d'identité de SQL Server Compact Edition 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 (int8), la création de cet abonnement échoue dans SQL Server Compact Edition.
    SQL Server Compact Edition vous permet de modifier les valeurs de départ et d'incrément côté Abonné au moyen de l'instruction ALTER TABLEtable_nameALTER COLUMNcolumn_nameIDENTITY (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 Edition 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 2000, les types de données computed column et timestamp ne sont pas pris en charge. Lors de l'abonnement à une publication SQL Server 2005, les types de données computed column, timestamp, date, time et utcdatetime ne sont pas pris en charge.
  • Types de données CHAR et NTEXT dans SQL Server et SQL Server Compact Edition
    SQL Server autorise un type de données CHAR plus grand que le type de données CHAR pour SQL Server Compact Edition. Pour la réplication de son contenu, ce type de données CHAR plus grand est converti en type NTEXT dans SQL Server Compact Edition. Bien que SQL Server et SQL Server Compact Edition 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 Edition parce que 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 Edition 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 (SQL Server Compact Edition)

Aide et information

Assistance sur SQL Server Compact Edition