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

Тогда странно.
Для решения здесь и сейчас можно сделать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE MyTest (myKey int, TS rowversion);
GO 
WHILE EXISTS(SELECT 1 FROM [dbo].[Defaults] [d] WHERE [d].[RowTS] >= @@DBTS)
    INSERT INTO MyTest (myKey)
    SELECT number FROM master..spt_values
GO
DROP TABLE MyTest



В хелпе пишутIs a data type that exposes automatically generated, unique binary numbers within a database.
...
Note:
Duplicate rowversion values can be generated by using the SELECT INTO statement in which a rowversion column is in the SELECT list. We do not recommend using rowversion in this manner.

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

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

зы у вас какая-то проблема со словом дубль?
-----
Дубль - это когда Я сам сделаю, а когда что-то стороннее - то это стороннее...


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

зы у вас какая-то проблема со словом дубль?
-----
Дубль - это когда Я сам сделаю, а когда что-то стороннее - то это стороннее...


Да, вопрос - вставки обязательно в ту же таблицу или можно тупо вбить таблицу с полем, прогнать счетчик и все это дропнуть?
Т.е. стампер он на таблицу или на базу?
вам тоже запрещено хелп читать?

авторДубль - это когда Я сам сделаю, а когда что-то стороннее - то это стороннее...

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

update я так понимаю у вас запрещён как класс
-----
Да. Там однократное определение значений и потом многократное использование.
Апдейта - нет - Я просто помру на его изготовлении. Есть удаление и новая вставка.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702635
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatTaPaK,

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

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

Если у вас не так, и вы можете это повторить, то надо писать на коннект
-----
Эти условия мне известны и они у меня не нарушаются.

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

вам тоже запрещено хелп читать?
-----
Могу Я задать вопрос над которым надо подумать перед тем как дать ответ?
Вопрос простой:
когда можно использовать @IDENTITY вместо @IDENTITY_INSERT
и когда попытка использования @IDENTITY_INSERT​ вместо ​@IDENTITY ​
там же даст ошибку? :)

Хелпу Я читаю и довольно много...
Вот сейчас надо решать что делать - нужна фабрика типа System.Data.Common.DbProviderFactory​
Для Оракла. Старого - 8.1 и 10.2.
Есть - для последних 11.0, 12.0 - но они не работают с ранними версиями серверов.
А вот для реализации надо реализовать, согласно документации, 4 метода.
один из которых
public static System.Data.Common.DbProviderFactory GetFactory(System.Data.Common.DbConnection pDbConnection)​
в документации - описан, а вот в реализации от мелкомягких его нет.
Надо думать как выкрутится из ситуации и заставить работать все, включая отсутствующий метод.
Это аккурат моя задачка.


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

авторА базы - базы так - от случая к случаю делаются. Доки смотрятся, но не так как у ДБАшников.
12 слово в хелпе про rowversion, не успеете утомится.

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

По остальному: ваш архитектор наверное очень заразен
-----
Проще - медики признали его невменяемым.

Вот теперь Я разгребаю то, что он наваял - там 2Гб спагетти-кода - и попутно делаю всякие мелочи типа импорта в системы (разные) клиентских данных в разных форматах и последующее использование этих данных опять таки в одной их нескольких наших систем.
Пока еще вроде не свихнулся... ну не окончательно, по крайней мере.
...
Рейтинг: 0 / 0
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
    #39702673
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

Спасибки всем - прогнал счетчик - все нормализовалось.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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