powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
25 сообщений из 38, страница 1 из 2
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702487
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?


Не так давно пришлось переносить базу с версии 10.50.4042.0​(2016?) на 10.0.5538.0​(2014?)
"Прямого" переноса - т.е. бекап+ресторе - не получилось - несовпадение по версиям бекапа.
Делалось посредством ДТС.
Прошло нормально - данные перелились, триггеры позднее накатил скриптом.


Все работает, но...


Временами в поле типа TIMESTAMP пишутся дуплицируемые значения.

Победить это Я могу прогнав х32000 пустых вставок в таблицу.

Может кто то понятно пояснить где спрямить и сразу поправить timestamp sequence?
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702508
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

я человек тёмный, но что вы вкладыаете в "дуплицирует" а то гугл меня шлёт в генетику
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702516
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIMESTAMP - глобальное свойство СЕРВЕРА.
И уникально, тоже только в пределах сервера.
Это простая последовательность номеров обновлений в рамках всего сервера.

Не надо было закладываться на уникальность.
Можно попытаться обновить все TIMESTAMP на х32000 вниз.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702517
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222TIMESTAMP - глобальное свойство СЕРВЕРА.
И уникально, тоже только в пределах сервера.
Это простая последовательность номеров обновлений в рамках всего сервера.

Не надо было закладываться на уникальность.
Можно попытаться обновить все TIMESTAMP на х32000 вниз.
прям таки сервера
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702530
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatМожет кто то понятно пояснить где спрямить и сразу поправить timestamp sequence?Спрямить можно перестав использовать timestamp как нечто уникальное. Ибо он предназаначен не для этого и уникальность значений не гарантируется.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702539
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

Выборка

SELECT RowTS,
Count(*)
FROM [dbo].[Defaults]
Group BY RowTS
HAVING COUNT(*) > 1

​Где RowTS поле типа TIMESTAMP не пуста.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702547
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

и как dts перетянул вам timestamp?
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702551
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatНе так давно пришлось переносить базу с версии 10.50.4042.0 ​(2016?) на 10.0.5538.0 ​(2014?)

SQL2008R2 -> SQL2008

http://sqlserverbuilds.blogspot.com/
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702571
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

А нормально перетащил.
RowTS генерируется и используется в триггерах чтобы связать запись в dbo.Defaults с другими таблицами. Структура и названия таблиц на момент определения dbo.Defaults - неизвестны. Отсюда и извращение со связыванием.

Проблема в том, что похоже генератор TIMESTAMP не обновился - выпадают те же значения, которые уже использовались.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702580
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Извини, но тонкости версий мне не особо интересны.
Где посмотреть точную версию сервера - нашел, а уж какой он - интересует достаточно мало.
Существенным было то, что бэкап+ресторе не совместились - пришлось гнать по ДТС.
А теперь - непонятные проблемы ползут...
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702583
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatПроблема в том, что похоже генератор TIMESTAMP не обновился - выпадают те же значения, которые уже использовались.

Что выдает @@DBTS и SELECT MAX(RowTS) FROM [dbo].[Defaults] ?
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702586
Guf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatTaPaKи как dts перетянул вам timestamp?
А нормально перетащил.
Вам мягко намекают на то, что настоящий timestamp нельзя ни задать ни изменить.
По этому узнайте последнее выданное значение timestamp в базе
Код: sql
1.
PRINT @@DBTS


И если результат не похож на то что у вас "дуплицируется", то показывайте скрипт создания таблицы и проблемное поле в ней.
А если похож, то тем более.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702593
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKPinkCat,

я человек тёмный, но что вы вкладыаете в "дуплицирует" а то гугл меня шлёт в генетику

с этим словом в генетику - это еще не самы плохой вариант
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702594
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatTaPaK,

А нормально перетащил.
RowTS генерируется и используется в триггерах чтобы связать запись в dbo.Defaults с другими таблицами. Структура и названия таблиц на момент определения dbo.Defaults - неизвестны. Отсюда и извращение со связыванием.

Проблема в том, что похоже генератор TIMESTAMP не обновился - выпадают те же значения, которые уже использовались.А у этого поля после переноса точно тип TIMESTAMP?
Закрадываются сомнения.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702596
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapPinkCatTaPaK,

А нормально перетащил.
RowTS генерируется и используется в триггерах чтобы связать запись в dbo.Defaults с другими таблицами. Структура и названия таблиц на момент определения dbo.Defaults - неизвестны. Отсюда и извращение со связыванием.

Проблема в том, что похоже генератор TIMESTAMP не обновился - выпадают те же значения, которые уже использовались.А у этого поля после переноса точно тип TIMESTAMP?
Закрадываются сомнения.
вставить в timestamp вообще нельзя, про то и вопрос


автори как dts перетянул вам timestamp?
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702599
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iiyama,

PRINT @@DBTS = 0x0000000000006D6A
Max(RowTS) = 0x000000000003290E
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702604
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guf,

Вам мягко намекают на то, что настоящий timestamp нельзя ни задать ни изменить.
-----
Я, как бы, это знаю.


показывайте скрипт создания таблицы и проблемное поле в ней.
-----
А поможет?
Я вот думаю что нет.

Следующим вопросом будет вопрос об триггерах.
И там тоже нет ничего критичного.
Критично то, что текущее значение счетчика не соответствует состоянию базы.
И Я не знаю как его поправить...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
ALTER TABLE [dbo].[Defaults] DROP CONSTRAINT [FK_Defaults_Keys]
GO

/****** Object:  Table [dbo].[Defaults]    Script Date: 14/09/2018 11:05:15 ******/
DROP TABLE [dbo].[Defaults]
GO

/****** Object:  Table [dbo].[Defaults]    Script Date: 14/09/2018 11:05:15 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Defaults](
	[IDs] [int] IDENTITY(1,1) NOT NULL,
	[Active] [varchar](1) NOT NULL DEFAULT ('Y'),
	[KeyID] [int] NOT NULL DEFAULT ((1)),
	[RecordType] [int] NOT NULL DEFAULT ((0)),
	[SequenceNo] [int] NOT NULL,
	[RowID] [binary](8) NULL,
[color=red]	[RowTS] [timestamp] NOT NULL,[/color]
PRIMARY KEY CLUSTERED 
(
	[IDs] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[Defaults]  WITH CHECK ADD  CONSTRAINT [FK_Defaults_Keys] FOREIGN KEY([KeyID])
REFERENCES [dbo].[Keys] ([IDs])
GO

ALTER TABLE [dbo].[Defaults] CHECK CONSTRAINT [FK_Defaults_Keys]
GO
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702607
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatiiyama,

PRINT @@DBTS = 0x0000000000006D6A
Max(RowTS) = 0x000000000003290E
ещё раз. timestamp это монотонно возрастающий идентификатор в рамках базы. Править max нельзя(может можно прям в db_info ). Это поле предназначено для работы именно как rowversion, и все остальные извращения это личные проблемы:)
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702608
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

А у этого поля после переноса точно тип TIMESTAMP?
-----
Да, тип поля сохранился при переносе - иначе у меня бы все давно сломалось.
Сейчас перепроверил - все как должно быть.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702611
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

вставить в timestamp вообще нельзя, про то и вопрос
-----
DTS - справляется с реплецированием поля.
Но, повторюсь, на работоспособность системы не перенос или неправильные значения в стампах никак не влияют.
Оно критично только на момент вставки при подключенных триггерах.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702613
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatiap,

А у этого поля после переноса точно тип TIMESTAMP?
-----
Да, тип поля сохранился при переносе - иначе у меня бы все давно сломалось.
Сейчас перепроверил - все как должно быть.

да, скорее всего это выглядит как
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE #a (a timestamp)

INSERT INTO #A DEFAULT VAlues
SELECT * FROM #a

SELECT* INTO #b FROM #a
SELECT * FROM #b
DROP TABLE #a
DROP TABLE #b



при этом dbts сдвигается от текущего в той базе куда вставляете, и решение на уникальность timestamp откровенная ересь.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702615
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

может можно прям в db_info
-----
Вот что-то подобное Я и ищу...
А про то, что НЕЛЬЗЯ ​- Я знаю... но ведь и дуплицироваться - не должно... а имеет место быть...
Так что нестандартная ситуация требует нестандартных мер...
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702619
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatTaPaK,

может можно прям в db_info
-----
Вот что-то подобное Я и ищу...
А про то, что НЕЛЬЗЯ ​- Я знаю... но ведь и дуплицироваться - не должно... а имеет место быть...
Так что нестандартная ситуация требует нестандартных мер...
прям в db_info это ещё большее извращение. Продолжайте пустые вставки на разницу....
зы у вас какая-то проблема со словом дубль?
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702621
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор не должно... а имеет место быть...
конструкция select into никому ничего не должна
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702623
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

решение на уникальность timestamp откровенная ересь.
-----
Возможно.
Я ведь не ДБА.
Решаю задачу в том виде в каком ее дают.
А задача была следующая:
- есть запись в таблице dbo.Defaults
- для нее должна быть парная и единственная запись в таблице которая будет определена позднее
- таблиц которые являются парными - полсотни и их количество увеличится по мере обновления документации партнером.
Есть у ДБА подходящее решение на такой случай?
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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