powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Server Management Studio (SSMS) Запросы между серверам
18 сообщений из 43, страница 2 из 2
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994424
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Использовать MERGE.
Чтобы гарантированно какая-то из двух таблиц переливалась на противоположный сервер? Достаточно выбирать те данные с прилинкованного сервера, у которых Epoch болше мксимального Epoch в локальной базе.

22187762 -- только имя поля поменять.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994449
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
Мне необходимо, чтобы таблица не увеличивалась, а записывала только новые данные.
Есть 24 точек по которым измеряет прибор, так вот я не хочу, чтобы у меня постоя увеличивались строчки, мне достаточно, чтобы они перезаписывались, как только поступят новые данные.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994455
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы делать такие вещи, в таблице-источнике очень желательно иметь уникальное монотонно возрастающее поле (ну и индекс по нему).

Дата очень плоха для этих целей, нужны будут дополнительные приседания для того, чтобы не пропускать данные или не тащить лишнего. Особенно будет все уныло, если эта дата формируется не на стороне сервера, а на стороне софта, который пишет данные, причем по-разному для каждого прибора.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994466
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
Ну а если с уникальным индексом, то нельзя ли просто придерживаться к определенному количеству строчек?
Например удалить старые точки и записать новые?
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994475
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDem,

через пару лет в таблице появился 300млн строк. Ваши действия по сравнению?
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994478
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDem,

через пару лет в таблице появился 300млн строк. Ваши действия по сравнению?
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994489
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
Это уже вторая часть истории, на данный момент у меня за год скопилось записей на 340 тыс.
Можете помочь с реализацией?
Это опыт пусть если - это будет провальным.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994513
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDem,

как часто добавляются записи в таблицу прибора?
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994518
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, Сейчас все в тестовом режиме раз в час записывает, потом через каждые 2-4 часа.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994525
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDem,

в таком случае проще добавить в таблицу записей колонку-нумератор identity. На принимающей стороне создайте таблицу, в которой будете сохранять последний полученный номер строки. При получении забирать все строки, номер которых имеют бОльшее значение. И так цикл повторять. Извлекли, сохранили номер.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994532
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
ArtDem,

в таком случае проще добавить в таблицу записей колонку-нумератор identity. На принимающей стороне создайте таблицу, в которой будете сохранять последний полученный номер строки. При получении забирать все строки, номер которых имеют бОльшее значение. И так цикл повторять. Извлекли, сохранили номер.

Тот же MERGE, только в виде велосипеда
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994535
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Тот же MERGE, только в виде велосипеда

Нет, это принципиально другой способ.
Он НЕ требует вычитки ВСЕХ данных с таблицы источника.
Если таблица большая - то это очень важный момент.








Владислав Колосов
в таком случае проще добавить в таблицу записей колонку-нумератор identity.


Для RCSI лучше timestamp + записи только меньше, чем MIN_ACTIVE_ROWVERSION
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994577
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, с трудом Вас понимаю, скил все таки у меня не такой.
Решил сделать вот такой велосипед:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SET IDENTITY_INSERT [dbo].[X]  ON
INSERT INTO [Match].[dbo].[x](
       [ID]
      ,[Point_ID]
      ,[Epoch]
      ,[Easting]
      ,[Northing]
      ,[Height])
    
SELECT [ID]
      ,[Point_ID]
      ,[Epoch]
      ,[Easting]
      ,[Northing]
      ,[Height]
FROM XYZ WHERE Point_ID BETWEEN  1 and 24 AND Epoch>" как сравнить с текущей датой?  "()



Понятно, что это работать не будет как я хочу, можно ли как то жесткие границы поставить, чтобы записывал новое, а старое удалял?

Спасибо!
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994591
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

самый простой способ, как мне кажется, это выборка из темпоральной таблицы применительно ситуации автора, когда показания пишутся редко. Этот способ хорош тем, что чтение не конфликтует с записью и можно читать только свежие данные.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994644
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсть 24 точек по которым измеряет прибор, так вот я не хочу, чтобы у меня постоя увеличивались строчки, мне достаточно, чтобы они перезаписывались, как только поступят новые данные

авторСтолбцов Point_ID=24 есть еще столбец Epoch - время измерения.
Нужно, чтобы записывались только свежие данные.

Владислав Колосов
msLex,

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


Сдается мне, автор не очень сам знает или не может объяснить, что такое эти свежие данные . Epoch не подходит, IDENTITY видимо тоже что то не то делает.


авторможно ли как то жесткие границы поставить, чтобы записывал новое, а старое удалял?
Что такое "старое", если у вас добавлялись только не существующие строки? Только MERGE вам поможет если у вас там перезаписывается на основном сервере.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994645
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,
Почитал я про темпоральные таблицы, я так понимаю, что они фиксирует изменения, ну и получиться тоже самое что сейчас и имеется, правильно ли я понял?
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994719
ArtDem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, Есть две таблицы, Results и Results1.
В Results записывает прибор свои измерения, Point id это количество измеряемых точек, измеряет прибор раз в час и отправляет данные в БД в таблицу Result Epoch это время, когда прибор измерил точку.


В Results1 запрашивал только новые, свежие, последние данные с таблицы Results и чтобы в таблице Results1 были только актуальные данные.
...
Рейтинг: 0 / 0
SQL Server Management Studio (SSMS) Запросы между серверам
    #39994749
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDem,

В темпоральные таблицы попадают и вставки. Для каждой строки указывается ее "срок годности". Если происходит только вставки, то достаточно проверять дату "от", а дату "по" игнорировать.
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Server Management Studio (SSMS) Запросы между серверам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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