powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Скопировать данные из 1-го MsSql в другой
8 сообщений из 8, страница 1 из 1
Скопировать данные из 1-го MsSql в другой
    #39893047
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, ситуация следующая. Сторонняя организация поставила MsSql бесплатную версию в качестве БД (БД1) для СКУД(СистемаУправленияДоступомПерсонала) на обычном ПК. Соответственно туда сыпятся данные о прохождении сотрудников через контрольные точки.
Теперь понадобилось тянуть оттуда данные в новую систему (НС) . Обнаружилось:
1) База данных сконфигурирована ужасно - нет индексов,дублирование данных и прочие прелести.
2) Железо не подходит по эти задачи.
3) Ввиду того, что лицензия бесплатная,соответственно работает 1 ядро со всеми вытекающими.

При выполнении несложных запросов еще получалось уложиться в адекватные сроки ответа базы, но когда потребовалось вытягивать
данные посложнее и побольше, то база явно не вывозит и рвет соединение. Если один сложный запрос, то еще с вероятностью 80% отработает, если запустишь 2 сразу то оба соединения принудительно обрываются сервером баз данных.
У меня есть строка подключения к этой базе данных, но лезть в нее и производить настройку индексов и оптимизацию нельзя.
Думаю сделать следующий костыль:
На нормальном железе есть нормальный лицензионный MSSQL c лицензиями на несколько ядер (БД2) .
Хочу в относительно ненагруженный период брать только необходимые для (НС) данные из (БД1) и заливать их в (БД2) .
Объем переносимых строк ~9000 строк с 5 столбцами.
Если я запускаю запрос к (БД1) , который должен стянуть эти 9000, я не могу получить результат-сервер (БД1) пишет, что произошла ошибка. Если я беру условия фильтрации немного другие и хочу получить 4500 строк, то запрос долго, но все-таки выполняется.
Соответственно я вижу следующие стратегии:
Слинковать 2 сервера и настроить джобер по копированию данных из (БД1) в (БД2) .

Сделать сервис-джобер с использование SqlDataReader или SqlBulkCopy
Соответственно каким способом можно с наибольшей вероятностью без ошибок перекинуть данные- скорость не критична, пусть она выполняется хоть час, но гарантировано перенесет данные. Есть что-то по аналогии yield return, только при извлечении данных из (БД1) , чтобы не получать весь набор и ронять (БД1) , а получать порциями поменьше.
Может еще есть какие-либо способы?
Отлично понимаю причины вышеизложенной ситуации, нормальные методы их решения, но это сейчас не применимо, не спрашивайте почему.
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893050
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Хочу в относительно ненагруженный период брать только необходимые для (НС) данные из (БД1) и заливать их в (БД2) .

Бэкап настрой на это время, затем восстанавливай его куда тебе надо и там делай все что хочешь.
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893052
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
мне нужна не вся база, а только 3 таблицы + новые записи за прошедшие сутки. Разве такой бэкап можно настроить?
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893098
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с какой ошибкой отваливается запрос? Таймаут? Грязные чтения допустимы? Может, попробовать переливать данные в режиме read uncommitted?
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893101
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Dima T,
мне нужна не вся база, а только 3 таблицы + новые записи за прошедшие сутки. Разве такой бэкап можно настроить?

Можно эти 3 таблицы SSIS-пакетом (делается элементарно из DTSWizard) переливать по расписанию к себе на сервер в какую-нибудь базу сбоку, а потом из этой базы забирать нужное. Ну, будет некоторый оверхед по объёму перегоняемых данных, зато, вполне возможно, задача будет решена. Ну, и эти таблицы можно забирать и вливать с помощью bсp - тоже как вариант. Быстрее, чем bcp, вряд ли что отработает.
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893156
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub,

авторто база явно не вывозит и рвет соединениепохоже на бред
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893765
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Ошибка:
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
Грязные чтения допустимы, так как в таблицу идут только инсерты.
Попробую профайлер запустить, чтобы больше информации об ошибке взять.
...
Рейтинг: 0 / 0
Скопировать данные из 1-го MsSql в другой
    #39893818
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Грязные чтения допустимы, так как в таблицу идут только инсерты.

для грязного чтения доджно быть задано
Код: sql
1.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


в SqlCommand таймаут задать полезно
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Скопировать данные из 1-го MsSql в другой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]