Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 October 08

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
Yaroslav Schekin
А вот SQL Server "понимает", и когда это случится, ошибка будет обработана неправильно.
Я к тому, что Ваше непонимание реальности не меняет, и каждая строка в примере:
CREATE PROCEDURE insert_data @a int, @b int AS 
  SET XACT_ABORT, NOCOUNT ON
  BEGIN TRY
     BEGIN TRANSACTION
     INSERT sometable(a, b) VALUES (@a, @b)
     INSERT sometable(a, b) VALUES (@b, @a)
     COMMIT TRANSACTION
  END TRY
  BEGIN CATCH
     IF @@trancount > 0 ROLLBACK TRANSACTION
     DECLARE @msg nvarchar(2048) = error_message()  
     RAISERROR (@msg, 16, 1)
     RETURN 55555
  END CATCH

там не просто так. ;)
я кажется понял
здесь
SET XACT_ABORT ON
поэтому будет автоматический rollback
дело было в этом?
источник

g

greeninsania in SqlCom.ru - Стиль жизни SQL
Igor Ivakhin
Но при это те быстрые случае станут медленее, верно?
Логично, но в моём случае мне важней стабильность, чем разница в 5 секунд с "быстрыми" случаями при общем времени около минуты, чем "залёт" на зависание в часы.
Попробуйте у себя без параллелизма, может и у Вас будет не критичная просадка по производительности.
источник

YS

Yaroslav Schekin in SqlCom.ru - Стиль жизни SQL
2flower _
я кажется понял
здесь
SET XACT_ABORT ON
поэтому будет автоматический rollback
дело было в этом?
Не только же...
These actions should always be there. Always. You may argue that the line

IF @@trancount > 0 ROLLBACK TRANSACTION

is not needed if there no explicit transaction in the procedure, but nothing could be more wrong. Maybe you call a stored procedure which starts a transaction, but which is not able to roll it back because of the limitations of TRY-CATCH. Maybe you or someone else adds an explicit transaction to the procedure two years from now. Will you remember to add the line to roll back then? Don't count on it. I can also hear readers that object if the caller started the transaction we should not roll back.... Yes, we should, and if you want to know why you need to read Parts Two and Three. Always rolling back the transaction in the CATCH handler is a categorical imperative that knows of no exceptions.
источник

II

Igor Ivakhin in SqlCom.ru - Стиль жизни SQL
Да вроде помогло, поставил option(maxdop 4) для начала, выполняется раза в 4 медленее но зависания походу ушли
источник

ИЕ

Илья Есипов... in SqlCom.ru - Стиль жизни SQL
Добрый день! Будут ли в Profiler отображаться запросы, которые выполняются в курсоре, который находится в транзакции?
источник

AK

Andy Korg in SqlCom.ru - Стиль жизни SQL
Илья Есипов
Добрый день! Будут ли в Profiler отображаться запросы, которые выполняются в курсоре, который находится в транзакции?
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
подскажите как преобразовать интовое значение 20200101 в дату 2020-01-01
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
convert(date, 'строка', 112)
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
Alex
convert(date, 'строка', 112)
Explicit conversion from data type int to date is not allowed.
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
Сначала в строку переведите
convert(date, cast(20200101 as nvarchar(8)), 112)
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
Conversion failed when converting date and/or time from character string.
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
какая версия sql сервера?
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
Alex
какая версия sql сервера?
13.0.2164.0 (X64)
источник

ДЗ

Дмитрий Зайцев... in SqlCom.ru - Стиль жизни SQL
Алексей, прочитайте правила канала, уважайте коллег, объединяйте сообщения.
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Denis Stadnik
Conversion failed when converting date and/or time from character string.
select cast(cast(20200101 as nvarchar(8)) as date)
а так?
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
select cast(cast(20200101 as nvarchar(8)) as date)
а так?
то же самое
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
поле точно интовое
источник

DS

Denis Stadnik in SqlCom.ru - Стиль жизни SQL
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Denis Stadnik
поле точно интовое
значит там есть то, что нельзя сконвертировать
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Denis Stadnik
то же самое
прямо буквально этот код выполняете?
select cast(cast(20200101 as nvarchar(8)) as date)
источник