Мне нужно обновить информацию о клиенте в одной базе данных SQL Server из другой - PullRequest
1 голос
/ 23 декабря 2011

Я новичок в базах данных, и мне нужна помощь. У нас есть написанное приложение, которое хранит свои данные в базе данных SQL Server. У нас также есть система POS, основанная на торговой точке QuickBooks. Мы покупаем продукт под названием QODBC, который дает нам ODBS-совместимый интерфейс с QBPOS.

База данных SQL Server имеет таблицу с именем customerinfo и содержит 15 интересующих нас столбцов информации из 70.

Это:

id, txtfname, txtlname, txtemployer, txtphone, email, txtaddress, txtcity, txtstate, txtzip, IDENTIFICATIONType, IDENTIFICATIONumber, IDState, IDENTIFICATIONExpiry & dtpBirth.

Эти столбцы необходимо импортировать в доступную для ODBC QBPOS, в которой столбцы имеют разные имена, причем QB предшествует всем вышеуказанным именам (например, столбец SQL Server id, поэтому столбец QBPOS QBid) , Что

мы бы хотели регулярно импортировать необходимые данные в QBPOS (скажем, каждую минуту или около того). Во-первых, кроме еженедельного или около того графика импорта, возможно ли сделать это с помощью значка, который мы могли бы просто поместить на рабочий стол, и делать это только тогда, когда это необходимо? Кроме того, сможем ли мы просто обновить измененные данные из базы данных SQL Server для существующих клиентов?

Заранее благодарю всех за любую помощь, которую вы можете предложить !!!

1 Ответ

2 голосов
/ 23 декабря 2011

Как правило, данные извлекаются, а не выталкиваются намного проще.

Это означает, что для вас предпочтительнее настроить расписание в системе QBPOS, которая запрашивает MS SQLСервер для сбора нужных вам данных.Я, однако, ничего не знаю о QBPos и ​​не могу комментировать, как это сделать, или даже если это возможно.

Альтернативой является загрузка одной записи за раз в QBPOS с SQL Server.Это, конечно, возможно, но я ожидаю, что это будет медленно ...

  1. Создайте ЛОГИН на сервере QBPOS, который ваш автоматизированный процесс будет использовать
  2. Создайте тот же ЛОГИН (стот же пароль) на сервере MS SQL
  3. Создайте связанный сервер на сервере MS SQL, который подключается к QBPOS
  4. Создайте хранимую процедуру, которая вставляет записи в соответствующую таблицу QBPOS
  5. Перейдите к планировщику агентов MS SQL Server и создайте новое задание, которое запускается каждую минуту
  6. Установите это задание для выполнения вашей ХРАНЕННОЙ ПРОЦЕДУРЫ

(хотя ваш код может выглядеть тактолкая весь набор данных за один раз, если вы профилируете SQL Server, вы увидите, что он запускает много отдельных команд вставки / обновления / удаления. Вот почему это более медленный механизм из двух.)

Чтобы обновить сервер QBPOS с помощью только изменений для SQL Server, вам нужно сделать что-то вроде ...
- Запись о каждом произошедшем изменении (удаление, а также вставкаи обновления)
- сохранить на сервере QBPOS метку времени последнего полученного изменения
- проверить это значение в хранимой процедуре SQL Server, чтобы определить, какие изменения нужно нажать

Примечание.разница между «что было передано» и «что было получено», поскольку для базы данных QBPOS возможно восстановление из резервной копии и т. д. Это означает, что значение «последние полученные данные» должно храниться в базе данных QBPOS.

Этот ответ намеренно довольно высокий уровень, так как написание сценария для точного решения всего этого заняло бы много места.Если есть какие-то термины или понятия, с которыми вы не знакомы, я бы порекомендовал поискать их в Books Online или в Google, посмотреть, чем вы можете управлять самостоятельно, и немного поиграть.В таких вещах очень важно знать, что вы делаете и почему, а не просто копировать явные инструкции от кого-то еще.

...