저는 SYNC Framework를 사용하여 2 개의 다른 데이터베이스를 병합했습니다. 내 데이터베이스가 같은 열이면 simple.i는 easly 일치하고 서로 동기화 할 수 있습니다. 하지만 내가 추가하고 몇 가지 드문 열을 가지고있는 테이블 내부의 일부 열을 제거합니다. 동기화는 작동하지 않는 열을 잡을 수 없습니다. 제게 기사 링크를 보내지 마십시오. 나는 그들 모두를 읽고있다. 아래Sync FrameWork를 사용하여 다른 열이있는 두 개의 테이블을 동기화하는 방법은 무엇입니까?
내 욕망 :
내 SQL 스크립트 :
GO
CREATE TABLE [dbo].[Customer](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[SurName] [nvarchar](50) NULL,
[Age] [int] NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
USE [clientDb3]
GO
/****** Object: Table [dbo].[Customer] Script Date: 4/17/2014 10:15:45 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[SurName] [nvarchar](50) NULL,
[Description] [nvarchar](50) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
C 번호 :
당신이 달성하고자하는 일에 대해 특별한 아무것도
namespace syncSample1
{
class Program
{
static void Main(string[] args)
{
string serverConn = @"data source=H2014-008\SQLEXPRESS;initial catalog=serverDb3;integrated security=True;MultipleActiveResultSets=True;";
string clientConn = @"data source=H2014-008\SQLEXPRESS;initial catalog=clientDb3;integrated security=True;MultipleActiveResultSets=True;";
using (var serverConnection = new SqlConnection(serverConn))
using(var clientConnection = new SqlConnection(clientConn))
{
var provider1 = new SqlSyncProvider("scopeTest",serverConnection);
var provider2 = new SqlSyncProvider("scopeTest",clientConnection);
//config
PrepareServerForProvisioning(provider1);
PrepareClientForProvisioning(provider2, serverConnection);
//sync
SyncOrchestrator sync = new SyncOrchestrator();
sync.LocalProvider= provider1;
sync.RemoteProvider=provider2;
sync.Direction = SyncDirectionOrder.UploadAndDownload;
sync.Synchronize();
Console.Read();
}
}
private static void PrepareServerForProvisioning(SqlSyncProvider provider)
{
SqlConnection connection = (SqlConnection)provider.Connection;
SqlSyncScopeProvisioning config = new SqlSyncScopeProvisioning(connection);
if (!config.ScopeExists(provider.ScopeName))
{
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription(provider.ScopeName);
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("Customer", connection));
DbSyncTableDescription serverTableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Customer", connection);
serverTableDesc.GlobalName = "CustomerTable";
config.PopulateFromScopeDescription(scopeDesc);
config.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);
config.Apply();
}
}
private static void PrepareClientForProvisioning(SqlSyncProvider provider, SqlConnection sourceConnection)
{
SqlSyncScopeProvisioning config = new SqlSyncScopeProvisioning((SqlConnection)provider.Connection);
if (!config.ScopeExists(provider.ScopeName))
{
DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(provider.ScopeName, sourceConnection);
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("Customer", sourceConnection));
config.PopulateFromScopeDescription(scopeDesc);
config.Apply();
}
}
}
}