Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/04/2012, 18:45
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Arquitectura réplicas sql entre diferentes servidores

Suponiendo que: la replicación se hace desde los nodos locales hacia el nodo central pero no entre nodos locales, que los nodos locales y el nodo central tienen el mismo modelo de tablas, y que el nodo central es read-only, tienes dos opciones para identificar los registros que se deben modificar en cada replicación:

1. Utilizar un identificador de nodo local agregando un campo en todas las tablas, por ejemplo:

Código:
--nodo 1
create table Clientes (
idNodo varchar(4) default 'NOD1',
idCliente int identity primary key,
...)
go

--nodo 2
create table Clientes (
idNodo varchar(4) default 'NOD2',
idCliente int identity primary key,
...)
go

--nodo central con pk compuesta
create table Clientes (
idNodo varchar(4),
idCliente int,
...)
go
alter table Clientes add constraint pk_clientes
 primary key (idNodo, IdCliente)
go
2. Utilizar un rango de valores, por ejemplo:

Código:
--nodo 1
create table Clientes (
idCliente int identity(1,1) primary key,
check (idCliente between 1 and 1000)
)
go

--nodo 2
create table Clientes (
idCliente int identity(2000,1) primary key,
check (idCliente between 2000 and 3000)
)
go

--nodo central con pk simple
create table Clientes (
idCliente int primary key,
...)
go
Con la opción 1 tienes la ventaja de no preocuparte por los rangos (límite de registros) y la desventaja de que ocupa más espacio, lo opuesto con la opción 2, que ocupa menos espacio y tiene un límite de registros por tabla en cada nodo, pero en ambos casos, agregar un nodo nuevo no afecta la estructura de los programas y permiten implementar la replicación con Transactional Replication, DTS, SSIS o consultas SQL con linked server.

Saludos