|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Здравствуйте! Подскажите, пожалуйста, интересует вот такой вопрос: Существует 2 сервера на первом сервере идет запись с измерительного прибора (прибор автоматически создал для себя БД и записывает данные в таблицу "Result") Необходимо запрашивать c таблицы "Result" нужные столбцы и записывать на второй сервер запрашиваемые данные. Запрос должен повтрятся раз в 10-20 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2020, 14:22 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, на втором сервере делаешь линк.сервер для первого - https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15 и дальше создаешь Job с нужным расписанием, в котором и будет "запрашивать c таблицы "Result" нужные столбцы и записывать на второй сервер запрашиваемые данные" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2020, 15:43 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
court ArtDem, на втором сервере делаешь линк.сервер для первого - https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15 и дальше создаешь Job с нужным расписанием, в котором и будет "запрашивать c таблицы "Result" нужные столбцы и записывать на второй сервер запрашиваемые данные" вариант 2 - SSIS пакет + тот же Job, но, имхо, тебя это не заинтересует (но при большом объеме загружаемых/синхронизируемых данных, этот вариант может существенно выигрывать ...) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2020, 15:47 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
court, не все так просто - прибору нельзя мешать записывать в таблицу. Здесь нужен вариант с темпоральной таблицей или CDC. Первый вариант заметно проще. Также можно настроить репликацию для передачи данных, если позволяет конфигурация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2020, 16:42 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
court на втором сервере делаешь линк.сервер для первого - https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15 и дальше создаешь Job с нужным расписанием, в котором и будет "запрашивать c таблицы "Result" нужные столбцы и записывать на второй сервер запрашиваемые данные" Спасибо! Я сделал линк, можно поподробнее, как создать Job ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 16:02 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, Агент SQL сервер, задания, добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 16:09 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 16:09 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов, Владислав Колосов, Я имел виду, как реализовать вот такую задачу: запись данных на второй сервер. Что я сделал, создал задачу с помощью вставил запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Понимаю, что этого не достаточно, нужно, как то теперь это записать в БД Match на сервере 2. Есть возможность подсказать ? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 17:43 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
авторкак то теперь это записать в БД Match на сервере 2Командой insert конечно https://docs.microsoft.com/en-us/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 17:54 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem как то теперь это записать в БД Match на сервере 2. в шаге Job-а измени запрос на INSERT Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 17:55 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
court, Спасибо! Я правильно понимаю, что расписание тут надо настраивать (см.скрин). Я так настраивал для бэкапа и у меня все работает, а вот тут нет, запись прошла после того как вызвал контекстное меню "Запустить задание на шаг" и после этого таблица не обновляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 21:04 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, проверьте выполнение по журналу задания. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 21:25 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов, Да,ошибки выдает. Не удалось завершить задание. Запуск задания был произведен Расписание 19 (SA). Последним выполнявшимся шагом был шаг 1 (SE). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 22:17 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem Владислав Колосов, Да,ошибки выдает. Не удалось завершить задание. Запуск задания был произведен Расписание 19 (SA). Последним выполнявшимся шагом был шаг 1 (SE). Бэкап выполняется без проблем, агент работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 22:55 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem ArtDem Владислав Колосов, Да,ошибки выдает. Не удалось завершить задание. Запуск задания был произведен Расписание 19 (SA). Последним выполнявшимся шагом был шаг 1 (SE). Бэкап выполняется без проблем, агент работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 23:00 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Первый вариант, я уже настраивал джоп для бэкапа и все работает. Настроил доступ к папкам, так же агент был подключен адекватно, через администратора. Бэкап по сей день работает. Запрос тоже адекватно написан, я проверял. Мне кажется, что это из за первого сервера, так как там нет агента, но с другой стороны, я же сделал линк между первым и вторым сервером. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 23:34 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Стало понятнее, ага. Давайте для простоты вы забудете про джоб с бэкапом и чётко так прям по пунктам расскажете следующее: 1. На каком сервере есть данные. 2. На какой сервер их надо перетащить. 3. На каком сервере из двух вы сделали линкованный сервер. 4. На каком сервере из двух вы пытаетесть сделать джоб. 5. На каком сервере из двух есть агент, а на каком нет. А то серверов аж целых два, и за вашими руками и мыслями не уследить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2020, 23:52 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Стало понятнее, ага. Давайте для простоты вы забудете про джоб с бэкапом и чётко так прям по пунктам расскажете следующее: 1. На каком сервере есть данные. 2. На какой сервер их надо перетащить. 3. На каком сервере из двух вы сделали линкованный сервер. 4. На каком сервере из двух вы пытаетесть сделать джоб. 5. На каком сервере из двух есть агент, а на каком нет. А то серверов аж целых два, и за вашими руками и мыслями не уследить. 1. Первый сервер имя "WIN-PIGV1ANGL00" - этот сервер был установлен автоматически при установки ПО от прибора, Второй сервер был создан мною так как нужен был Агент имя сервера "WIN-PIGV1ANGL00\MSSQLSERVER02" тут я создал БД Match и таблицу Result. 2. На второй. 3. На втором. 4. На втором. 5. На первом нет, на втором есть. Добавлю от себя, удалил джоп и таблицу, и сделал все заново, агент сработал один раз, второй запуск был уже с ошибкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 00:27 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem Гавриленко Сергей Алексеевич Стало понятнее, ага. Давайте для простоты вы забудете про джоб с бэкапом и чётко так прям по пунктам расскажете следующее: 1. На каком сервере есть данные. 2. На какой сервер их надо перетащить. 3. На каком сервере из двух вы сделали линкованный сервер. 4. На каком сервере из двух вы пытаетесть сделать джоб. 5. На каком сервере из двух есть агент, а на каком нет. А то серверов аж целых два, и за вашими руками и мыслями не уследить. 1. Первый сервер имя "WIN-PIGV1ANGL00" - этот сервер был установлен автоматически при установки ПО от прибора, Второй сервер был создан мною так как нужен был Агент имя сервера "WIN-PIGV1ANGL00\MSSQLSERVER02" тут я создал БД Match и таблицу Result. 2. На второй. 3. На втором. 4. На втором. 5. На первом нет, на втором есть. Добавлю от себя, удалил джоп и таблицу, и сделал все заново, агент сработал один раз, второй запуск был уже с ошибкой. См. Скрин ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 00:36 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Там еще плюсики есть на вашем скрине, вы их пробовали нажимать, ошибки читать? В которых скорее всего написано, что в таблице [Match].[dbo].[Results] уже есть записи с каким-то идентификатором. Надо как бы понимать, что вы делаете, а не слепо верить, что ваш запрос адекватный. Не адекватный он. Из таблицы [WIN-PIGV1ANGL00].[NordSteam].[dbo].[Results] надо выбирать не все записи, а только те, которых еще нет в [Match].[dbo].[Results]. Или, если предположить, что ID монотонно возрастает, то те, у которых идентификатор больше, чем максимальный в [Match].[dbo].[Results]. Как-то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 01:19 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Спасибо большое ребята. Все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2020, 21:16 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem Бекап делается каждые 10 СЕКУНД??? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 08:12 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
SQL2008, Нет, это для теста было сделано, два раза в неделю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 16:01 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Добрый день! Возник один вопрос, как записывать только новые данные в таблицу? Запрос между двумя таблицами. Запрашиваем новые данные с таблицы dbo.Results и записываем в таблицу dbo.Match. Столбцов Point_ID=24 есть еще столбец Epoch - время измерения. Нужно, чтобы записывались только свежие данные. Подскажите, как правильно это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:04 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem Добрый день! Возник один вопрос, как записывать только новые данные в таблицу? Запрос между двумя таблицами. Запрашиваем новые данные с таблицы dbo.Results и записываем в таблицу dbo.Match. Столбцов Point_ID=24 есть еще столбец Epoch - время измерения. Нужно, чтобы записывались только свежие данные. Подскажите, как правильно это сделать? Использовать MERGE. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:07 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
SQL2008 Использовать MERGE. 22187762 -- только имя поля поменять. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:14 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Мне необходимо, чтобы таблица не увеличивалась, а записывала только новые данные. Есть 24 точек по которым измеряет прибор, так вот я не хочу, чтобы у меня постоя увеличивались строчки, мне достаточно, чтобы они перезаписывались, как только поступят новые данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:47 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Для того, чтобы делать такие вещи, в таблице-источнике очень желательно иметь уникальное монотонно возрастающее поле (ну и индекс по нему). Дата очень плоха для этих целей, нужны будут дополнительные приседания для того, чтобы не пропускать данные или не тащить лишнего. Особенно будет все уныло, если эта дата формируется не на стороне сервера, а на стороне софта, который пишет данные, причем по-разному для каждого прибора. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 13:52 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, Ну а если с уникальным индексом, то нельзя ли просто придерживаться к определенному количеству строчек? Например удалить старые точки и записать новые? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:06 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, через пару лет в таблице появился 300млн строк. Ваши действия по сравнению? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:14 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, через пару лет в таблице появился 300млн строк. Ваши действия по сравнению? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:18 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов, Это уже вторая часть истории, на данный момент у меня за год скопилось записей на 340 тыс. Можете помочь с реализацией? Это опыт пусть если - это будет провальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 14:31 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, как часто добавляются записи в таблицу прибора? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:18 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов, Сейчас все в тестовом режиме раз в час записывает, потом через каждые 2-4 часа. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:23 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, в таком случае проще добавить в таблицу записей колонку-нумератор identity. На принимающей стороне создайте таблицу, в которой будете сохранять последний полученный номер строки. При получении забирать все строки, номер которых имеют бОльшее значение. И так цикл повторять. Извлекли, сохранили номер. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:42 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов ArtDem, в таком случае проще добавить в таблицу записей колонку-нумератор identity. На принимающей стороне создайте таблицу, в которой будете сохранять последний полученный номер строки. При получении забирать все строки, номер которых имеют бОльшее значение. И так цикл повторять. Извлекли, сохранили номер. Тот же MERGE, только в виде велосипеда ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:47 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
SQL2008 Тот же MERGE, только в виде велосипеда Нет, это принципиально другой способ. Он НЕ требует вычитки ВСЕХ данных с таблицы источника. Если таблица большая - то это очень важный момент. Владислав Колосов в таком случае проще добавить в таблицу записей колонку-нумератор identity. Для RCSI лучше timestamp + записи только меньше, чем MIN_ACTIVE_ROWVERSION ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 15:51 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Господа, с трудом Вас понимаю, скил все таки у меня не такой. Решил сделать вот такой велосипед: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Понятно, что это работать не будет как я хочу, можно ли как то жесткие границы поставить, чтобы записывал новое, а старое удалял? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 17:52 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
msLex, самый простой способ, как мне кажется, это выборка из темпоральной таблицы применительно ситуации автора, когда показания пишутся редко. Этот способ хорош тем, что чтение не конфликтует с записью и можно читать только свежие данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 18:08 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
авторЕсть 24 точек по которым измеряет прибор, так вот я не хочу, чтобы у меня постоя увеличивались строчки, мне достаточно, чтобы они перезаписывались, как только поступят новые данные авторСтолбцов Point_ID=24 есть еще столбец Epoch - время измерения. Нужно, чтобы записывались только свежие данные. Владислав Колосов msLex, самый простой способ, как мне кажется, это выборка из темпоральной таблицы применительно ситуации автора, когда показания пишутся редко. Этот способ хорош тем, что чтение не конфликтует с записью и можно читать только свежие данные. Сдается мне, автор не очень сам знает или не может объяснить, что такое эти свежие данные . Epoch не подходит, IDENTITY видимо тоже что то не то делает. авторможно ли как то жесткие границы поставить, чтобы записывал новое, а старое удалял? Что такое "старое", если у вас добавлялись только не существующие строки? Только MERGE вам поможет если у вас там перезаписывается на основном сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 22:03 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
Владислав Колосов, Почитал я про темпоральные таблицы, я так понимаю, что они фиксирует изменения, ну и получиться тоже самое что сейчас и имеется, правильно ли я понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2020, 22:07 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
PizzaPizza, Есть две таблицы, Results и Results1. В Results записывает прибор свои измерения, Point id это количество измеряемых точек, измеряет прибор раз в час и отправляет данные в БД в таблицу Result Epoch это время, когда прибор измерил точку. В Results1 запрашивал только новые, свежие, последние данные с таблицы Results и чтобы в таблице Results1 были только актуальные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 11:34 |
|
SQL Server Management Studio (SSMS) Запросы между серверам
|
|||
---|---|---|---|
#18+
ArtDem, В темпоральные таблицы попадают и вставки. Для каждой строки указывается ее "срок годности". Если происходит только вставки, то достаточно проверять дату "от", а дату "по" игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 12:32 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1685704]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 401ms |
0 / 0 |