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


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


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


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

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

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

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

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

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

Выборка

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

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

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

SQL2008R2 -> SQL2008

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

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

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

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

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


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

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

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

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

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

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

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


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

PRINT @@DBTS = 0x0000000000006D6A
Max(RowTS) = 0x000000000003290E
...
Рейтинг: 0 / 0
14.09.2018, 13:06
    #39702604
PinkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
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
14.09.2018, 13:08
    #39702607
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
PinkCatiiyama,

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

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

вставить в timestamp вообще нельзя, про то и вопрос
-----
DTS - справляется с реплецированием поля.
Но, повторюсь, на работоспособность системы не перенос или неправильные значения в стампах никак не влияют.
Оно критично только на момент вставки при подключенных триггерах.
...
Рейтинг: 0 / 0
14.09.2018, 13:16
    #39702613
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
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
14.09.2018, 13:17
    #39702615
PinkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда MS SQL дуплицирует значения в поле типа TIMESTAMP?
TaPaK,

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

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

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


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