Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
Azec
Member

Откуда:
Сообщений: 48
Кто-нибудь делал, подскжите, что-то никак неполучается.
Там куча примеров но нету от SQL Server 2008 к SQL Server 2008
Сколько непробую что-то никак неполучается.
Там куча всяких разных SyncProvider , никак немогу понять какие и где использовать.
2 июл 09, 13:07    [7368001]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
Azec
Member

Откуда:
Сообщений: 48
Вот такой код для создания инфраструктуры на первой базе для синхронизации.

DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription(sn);
            DbSyncTableDescription td = SqlSyncDescriptionBuilder.GetDescriptionForTable("TestTable1", lcon);
                scopeDesc.Tables.Add(td             );
                SqlSyncScopeProvisioning serverConfig = new SqlSyncScopeProvisioning(scopeDesc);
                DbServerSyncProvider ss = new DbServerSyncProvider();
                
            
            serverConfig.SetCreateTableDefault(DbSyncCreationOption.Skip);
                serverConfig.SetCreateProceduresDefault(DbSyncCreationOption.Create);
               serverConfig.SetCreateProceduresForAdditionalScopeDefault(DbSyncCreationOption.Create);
               serverConfig.SetCreateTrackingTableDefault(DbSyncCreationOption.Create);
                serverConfig.SetCreateTriggersDefault(DbSyncCreationOption.Create);
                serverConfig.SetPopulateTrackingTableDefault(DbSyncCreationOption.Create);

                serverConfig.Apply(lcon);

Все бы хорошо и работает, если в TestTable1 нету автоинкрементированого ключа.
Если его нету то эта штука срабатывает, и можно использовать SyncOrchestrator для синхронизации баз.

 public class Sync : SyncOrchestrator
    {
        public Sync()
        {
            string sn = "xx1";
            SqlConnection lcon = new SqlConnection(@"111111 conn");
            SqlConnection rcon = new SqlConnection(@"222222 conn");
            
         
            this.LocalProvider = new SqlSyncProvider(sn,lcon);
            this.RemoteProvider = new SqlSyncProvider(sn, rcon);
            this.Direction = SyncDirectionOrder.Upload;
        }

А если в таблице есть ID который автоинкрементируется, то выдает слудующую ошибку
Невозможно вставить явное значение для столбца идентификаторов в таблице "TestTable1_tracking", когда параметр IDENTITY_INSERT имеет значение OFF.

Использую Sync Framework 2.0 CTP (May 2009).
Может надо первый Sync Framework использовать и в нем все будет работать?

PS1: Кто в теме, есть вопрос.
В базе SQL Server 2008 можно для базы и для отдельных табличек прописывать автоматический Change Tracking, и его инфраструктура идет отдельна от той которую делает код выше.
Может быть можно писать код (какието SyncProvider-ы), которые будут использовать встроеную Change Tracking.

Я пробовал что то типа такого:
 public class MyServerSyncProvider : DbServerSyncProvider
    {
        public MyServerSyncProvider(string serverConnectionString)
        {

            SqlConnection sqlConnection = new SqlConnection(serverConnectionString);

            SqlSyncAdapterBuilder ab;

            ab = new SqlSyncAdapterBuilder(sqlConnection);
            ab.TableName = "TestTable1";
            ab.ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking;
            ab.SyncDirection = SyncDirection.UploadOnly;
            this.SyncAdapters.Add(ab.ToSyncAdapter());


            this.Connection = sqlConnection;
        }

    }

public class Sync : SyncAgent
    {
              this.LocalProvider = new MyServerSyncProvider ("111 con");
            this.RemoteProvider = new MyServerSyncProvider ("222 con");
}

Выдает непонятную ошибку на тему преобразования типов в строке
this.LocalProvider = new MyServerSyncProvider ("111 con");
2 июл 09, 15:56    [7369355]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Эээ, простите, а стандартная репликация не катит?
2 июл 09, 16:08    [7369445]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
Azec
Member

Откуда:
Сообщений: 48
Ну у меня один комп - домашний, с него надо на сервак данные перекидывать по нажатию мышки.
Незнаю, можно ли сделать репликацию с сервера у которого нету своего постоянного ип ( у меня стрим ).
Вообщем если это можно сделать, было бы бы крута.
2 июл 09, 17:56    [7370241]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Azec
Ну у меня один комп - домашний, с него надо на сервак данные перекидывать по нажатию мышки.
Незнаю, можно ли сделать репликацию с сервера у которого нету своего постоянного ип ( у меня стрим ).


Гм... Экспортировать данные можно и без репликации. Хоть самостоятельно написанными скриптами, прилинковав удаленный сервак, хоть SSIS пакетами.
3 июл 09, 08:31    [7371447]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
Azec
Member

Откуда:
Сообщений: 48
Мне нужна не разовая экспортация, а например что бы каждый день базы становились идентичными.
Размер базы, около 5ГБ. И полный экспорт базы неподходит.

Понятно, что можно написать скрипты, которые будут их синхронизировать, но как раз на это и существуют репликация и SyncFramework что бы их неписать вручную.
3 июл 09, 14:46    [7373827]     Ответить | Цитировать Сообщить модератору
 Re: Кто-нибудь делал синхронизацию 2х SQL Server 2008 на Sync Framework?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Azec
Мне нужна не разовая экспортация, а например что бы каждый день базы становились идентичными.
Размер базы, около 5ГБ. И полный экспорт базы неподходит.


Ну, тогда, смотрите в сторону репликации.
3 июл 09, 14:53    [7373877]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить