Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Транзакции в SSMS  [new]
SergASh
Member

Откуда:
Сообщений: 167
Привет всем!

Открываю SSMS и пишу там
BEGIN TRAN
INSERT
  INTO tblName ( Name )
  SELECT 'John' UNION
  .....
  SELECT 'Boris'
ROLLBACK TRAN

Жму F5, SSMS пишет, что запрос выполнился (зеленая галочка внизу).

Жму F5 во второй раз, запрос не выполнился из-за того, что Name уникальное поле. Как так? Если предыдущий запрос выполнился, то как следующий может видеть его результаты при откаченной транзакции?

Дальше ещё интересней. Закрываю в SSMS документ с этим запросом, а она говорит, что есть uncommitted transactions и предлагает их отменить или подтвердить. Как это понимать?

SQL Server 2008 R2 Standard

Спасибо
31 май 13, 06:53    [14373323]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
print @@version что вернет?
31 май 13, 07:01    [14373331]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А, и , да - скрипт создания таблицы тоже покажите.
31 май 13, 07:13    [14373341]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
SergASh
Member

Откуда:
Сообщений: 167
CREATE TABLE [dbo].[tblName]
(
  RowVersion ROWVERSION NOT NULL
 ,NameId BIGINT NOT NULL IDENTITY
 ,Name NVARCHAR(75) NOT NULL
 ,Telephone NVARCHAR(25) NOT NULL
 ,Email NVARCHAR(100) NOT NULL
 ,Code NVARCHAR(75) NOT NULL
 ,CONSTRAINT PK_Name
    PRIMARY KEY ( NameId )
 ,CONSTRAINT UQ_Name_Email
    UNIQUE ( Email )
 ,CONSTRAINT UQ_Name_Name
    UNIQUE ( Name )
 ,CONSTRAINT UQ_Name_Code
    UNIQUE ( Code )
)

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
	Apr  2 2010 15:48:46 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )
31 май 13, 07:33    [14373364]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Сервер не патчен вообще...
Сообщение об ошибке какое? А то больно много у вас там уникальных констрейнтов накручено и все столбцы не NULL.

Да и ваш скрипт вставки выдает при первом же выполнении вот такую ошибку:

Msg 515, Level 16, State 2, Line 21
Cannot insert the value NULL into column 'Code', table 'dbo.tblName'; column does not allow nulls. INSERT fails.

The statement has been terminated.

Сообщение было отредактировано: 31 май 13, 07:43
31 май 13, 07:40    [14373368]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
SergASh
Member

Откуда:
Сообщений: 167
tpg,

Скрипт втавки я упростил, естественно в реальности он заполняет все обязательные поля. Не думаю, что от конкретного перечня полей что-то зависит, поскольку с подобной проблемой я сталкивался и раньше на совсем других запросах.

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

Повторить проблему не удалось. Возникать она стала с ростом объема данных насколько я могу судить, поначалу такого не было.
31 май 13, 08:10    [14373410]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
На голом релизе и не такое можно получить...
Патчте сервер. Вон, уже давно СП2 на дворе, а у вас...
31 май 13, 08:12    [14373415]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
tpg
На голом релизе и не такое можно получить...
Патчте сервер. Вон, уже давно СП2 на дворе, а у вас...
Не верю, что такие серьёъные ошибки могу3т быть даже на какой нибуть бете, а тут целый релиз, пусть и без сервис-паков.

Тем более ошибку повторить не удалось.

ИМХО дело в том, что:
SergASh
Скрипт втавки я упростил

Где то там есть ошибка логики, работы с транзакциями, обработки ошибок...
31 май 13, 08:33    [14373469]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
alexeyvg,

да даже спорить не буду, как никогда в продуктив не поставлю и голый релиз. :)

Сообщение было отредактировано: 31 май 13, 08:47
31 май 13, 08:46    [14373526]     Ответить | Цитировать Сообщить модератору
 Re: Транзакции в SSMS  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
SergASh,

Вы пользуйтесь для отладки select @@trancount - помогает )).
Когда выловите ошибку - сразу смотрите сколько транзакций открыто в этой сессии.
31 май 13, 09:17    [14373666]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить