Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что возможно ли на T-SQL? / 16 сообщений из 16, страница 1 из 1
05.08.2002, 18:30:37
    #32040991
hepry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Здравствуйте уважаемые!
Не так давно перешел на SQL Server. Возникла потребность периодически обменивать данными 2 БД. Возможно ли в принципе организовать подобную синхронизацию данных средствами T-SQL?
В принципе интересуют возможности СУБД. Это как минимум:
1. последовательный перебор записей в выборке с определенными действиями
2. поиск записи в выборке
3. ну и добавление/изменение записи
С третим пунктом разобраться смогу (привел лишь для полноты). А вот Первые два поставили меня в тупик.

Заранее спасибо
...
Рейтинг: 0 / 0
05.08.2002, 19:52:50
    #32041015
Alexander_Chepack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
А обязательно надо на T-SQL?

Если на T-SQL - то, наверное, можно через курсоры и linked servers. Но я бы DTS использовал, хотя все от деталей зависит.
...
Рейтинг: 0 / 0
05.08.2002, 20:17:10
    #32041022
andreym999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Я такое сделал с помощью курсора. Перебирал записи если такая запись (по ключу) существовала то апдейтил ее если ее небыло то добавлял. Но у меня было пару небольших таблиц (справочники). Исходая база не моя поэтому репликацию не использовал. Курсор это самый медленный способ работы хотя индексы здорово могут поднять его производительность
Работало это в одну сторону.
...
Рейтинг: 0 / 0
06.08.2002, 03:58:58
    #32041048
Саша
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Возможно ли в принципе организовать подобную синхронизацию данных средствами T-SQL?

А чем не устроили репликации?

можно в крсоре использовать удаленные процедуры (линковать сервер. Репликация так и делает)
...
Рейтинг: 0 / 0
06.08.2002, 08:01:49
    #32041057
Genady_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
2 andreym999

Интересно, а зачем курсоры то, если ключ есть?
...
Рейтинг: 0 / 0
06.08.2002, 10:03:40
    #32041081
hepry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Спасибо за отклики.
Поясню более детально. 2 базы по структуре не сопоставимы друг с другом напрямую, поэтому технологии репликации и DTS, похоже, не подойдут. Необходимо построить алгоритм сопоставления так, как могут это делать СУБД. Но необходимо, чтобы этот алгоритм запускался периодически вне зависимости от загруженного профиля пользователя. Т.е. либо писать программу и изучать как из нее сделать сервис NT или пытаться встроить в механизмы уже существующего сервиса SQLServer agent. Что я и задумал сделать.
Причем структуру одной из баз менять нельзя: это сторонняя программа!

andreym999:
> Работало это в одну сторону
Это Вы о том, что в хранимых процедурах нельзя изменять данные других баз?
В любом случае как это сделать? Или где почитать?

Спасибо.
...
Рейтинг: 0 / 0
06.08.2002, 10:42:54
    #32041096
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
как вариант решения:
настраиваешь запуск процедуры по расписанию
в ней курсорам по записям - выбираешь нужные, пересчитываешь как тебе нужно , записываешь в прилинкованную базу данных.
отчет об исполнении заносишь в таблицу, файл, посылаешь по почте или сообщение по SMB.

если есть конкретные вопросы сообщи ...
...
Рейтинг: 0 / 0
06.08.2002, 10:59:11
    #32041102
hepry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Вы знаете, похоже мой вопрос просто по основному синтаксису T-SQL. В той справочной информации, что у меня есть, нет описания конструкций языка, позволяющих проходиться по выборке.

Ну к примеру, на Fox'е после select ... into cursor Some я могу:
select some
scan
...
endscan

или

do while !eof()
...
skip
enddo

И как искать конкретную запись в выборке. Ну как seek(some.fk,"some2","fk")?

Где прочитать о подобном для T-SQL. Возможно я плохо искал, но сколько бы мне не попадалось статей они все об особенностях select-SQL
...
Рейтинг: 0 / 0
06.08.2002, 11:06:44
    #32041108
hepry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Возможно я понял: написать процедуру, которая делала бы с записью то, что необходимо, и вызывать ее для определенного select в части when или в качестве вычисляемого поля.
...
Рейтинг: 0 / 0
06.08.2002, 12:09:33
    #32041152
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
дык на SQL-е надо не с записями работать, а с данными
...
Рейтинг: 0 / 0
06.08.2002, 12:30:56
    #32041172
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
>Где прочитать о подобном для T-SQL. Возможно я плохо искал, но сколько бы мне не попадалось статей они все об особенностях select-SQL

почитай BOL , раздел declare cursor
...
Рейтинг: 0 / 0
06.08.2002, 14:16:07
    #32041227
Alexander_Chepack
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
А почему DTS не подходит - ну разные структуры у Вас - ну и что? DTS - это ж просто VBScript - на нем что угодно можно сделать...
...
Рейтинг: 0 / 0
06.08.2002, 14:38:51
    #32041238
hepry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Alexander_Chepack
> А почему DTS не подходит ... DTS - это ж просто VBScript

Похоже, Вы правы, его можно рассматривать как альтернативный вариант. Но для такого новичка, как я, оказалось проще sql-скриптом.
...
Рейтинг: 0 / 0
06.08.2002, 23:08:17
    #32041360
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Опять я ничего не понял. Обе таблицы на одном MS SQL-сервере или "сторонняя" таблица на чем нибудь другом? Если на другом - то DTS.

Если обе таблицы в MS SQL, то что надо конкретно?
1. Добавить в "свою", то что есть в "чужой", но нет в "своей"? Обратная операция?
2. Удалить из "своей", то чего нет в "чужой"? Обратная операция?
3. Изменить значения в "своей" в зависимости от значений в "чужой"? Обратная операция?


1. последовательный перебор записей в выборке с определенными действиями
Не надо делать никаких переборов в выборке.
Прежде всего это надо попытаться сделать через UPDATE с условием. Существует очень мало задач для которых выгоднее использовать курсоры.

2. поиск записи в выборке
Опять же не надо искать никаких записей в выборке. Надо использовать select с условием и сразу получать результат.
...
Рейтинг: 0 / 0
07.08.2002, 07:12:13
    #32041375
Deosfen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
? 1. последовательный перебор записей в выборке с определенными действиями

я использую временные таблицы.
...
Рейтинг: 0 / 0
07.08.2002, 20:09:25
    #32041657
andreym999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что возможно ли на T-SQL?
Наконец то добрался до форума
То Genady_
Я не только инсертил недостающие записи, но и апдейтил существующии. Как заапдейтить без курсора не знаю. У меня не получилось (записей то много и у каждой свой ключ)
То hepry У меня была база чужая и своя. И вот в этой чужой базе были отличные справочники которые я конечно захотел использовать и получить еще к тому же связи в моей базе и т.п. и еще иметь всегда относительно свежую версию. Принцип работы курсора следующий:
В исходной таблице читаем по очереди записи: если есть соответствие в моей таблице то апдейтим все поля в моей таблице если такой записи нет то инсертим в таблицу новую запись. И все.
В принципе можно написать курсор который с помощью бизнес-правил будет переносить данные в обе стороны, хотя это уже похоже больше на репликацию слиянием, а потому вопрос что нельзя никак по другому выкрутиться ? А то это уже похоже на изобретение велосипеда.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что возможно ли на T-SQL? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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