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

Откуда:
Сообщений: 2
Доброго дня коллеги вопрос. Два сервера MS SQL. Идентичная база. Пробую переехать с 2005 сервера на 17. В 17 возник вопрос к синтаксису "Raiserror"


В 2005 работало так ... при переносе базы на 17 сервер возникли притенении к этой части


  return
  errorHandler:
    raiserror @errorNumber @errorMsg
  rollback transaction
END


К сообщению приложен файл. Размер - 126Kb
3 июн 19, 15:43    [21900624]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
Konst_One
Member

Откуда:
Сообщений: 11456
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-2017
3 июн 19, 15:44    [21900626]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
DreamDem
Member

Откуда:
Сообщений: 2
Konst_One
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-2017


Это уже читал.

  return
  errorHandler:
    raiserror (@errorNumber, @errorMsg)
  rollback transaction


Не спасло
3 июн 19, 15:59    [21900648]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6526
DreamDem
Konst_One
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-2017


Это уже читал.

  return
  errorHandler:
    raiserror (@errorNumber, @errorMsg)
  rollback transaction


Не спасло


это как читали?

автор
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
3 июн 19, 16:04    [21900658]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
iap
Member

Откуда: Москва
Сообщений: 46838
DreamDem
Konst_One
https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-2017


Это уже читал.

  return
  errorHandler:
    raiserror (@errorNumber, @errorMsg)
  rollback transaction



Не спасло
А где там ERROR NUMBER? На первом месте - текст сообщения.
3 июн 19, 16:06    [21900663]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3013
DreamDem


В 2005 работало так ... при переносе базы на 17 сервер возникли притенении к этой части


[/src]



О, сколько вам открытий чудных будет при таком резком переносе
4 июн 19, 11:02    [21901307]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
Shakill
Member

Откуда: мск
Сообщений: 1833
iap
А где там ERROR NUMBER? На первом месте - текст сообщения.

у ТСа в коде использовался недокументированный синтаксис raiserror, который MS перестали поддерживать с 2012 сервера, вроде бы
документированный синтаксис был примерно таким же как сейчас и в 2005 версии
4 июн 19, 11:29    [21901339]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3013
Shakill
iap
А где там ERROR NUMBER? На первом месте - текст сообщения.

у ТСа в коде использовался недокументированный синтаксис raiserror, который MS перестали поддерживать с 2012 сервера, вроде бы
документированный синтаксис был примерно таким же как сейчас и в 2005 версии


Был, а старый - это хвосты от Sybase, и еще такой синтаксис генерировал PowerDesigner, сам на такое нарвался, когда Майкрософт прекратил поддерживать этот синтаксис.
Но кто ж будет переделывать, если работает
4 июн 19, 11:43    [21901362]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
iap
Member

Откуда: Москва
Сообщений: 46838
Shakill
iap
А где там ERROR NUMBER? На первом месте - текст сообщения.

у ТСа в коде использовался недокументированный синтаксис raiserror, который MS перестали поддерживать с 2012 сервера, вроде бы
документированный синтаксис был примерно таким же как сейчас и в 2005 версии
Я сам вовсю использовал этот синтаксис.
Тогдашние версии ErWin`а активно этому способствовали, ибо этот синтаксис генерировался в них по умолчанию.
Впоследствии пришлось потратить много дней на поиск и выгребание всех старых RAISERRORов.
DreamDem, успехов! Главное не бояться и - ручками, ручками! Может помочь в поиске скрипт типа такого:
SELECT type, name
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE N'%RAISERROR[ ][@0123456789]%';
Разве что его доработать надо для случая нескольких пробелов (или табуляций, перевода строки и т.п.)
после RAISERROR и для гарантии, что перед RAISERROR нет буквы или цифры.
Выявить все объекты, содержащие неправильные RAISERRORы и исправить их.
4 июн 19, 13:03    [21901466]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
iap
Member

Откуда: Москва
Сообщений: 46838
Забыл про COLLATE и регистр букв:
SELECT type, name
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE N'%RAISERROR[ ][@0123456789]%' COLLATE Cyrillic_General_CI_AI;
4 июн 19, 13:30    [21901493]     Ответить | Цитировать Сообщить модератору
 Re: В MS SQL 17 возник вопрос к синтаксису "Raiserror"  [new]
iap
Member

Откуда: Москва
Сообщений: 46838
Я тут мозгом пошевелил... Вроде вот этот скрипт выдаст типы и имена всех объектов, в которых используется старый синтаксис RAISERROR:
SELECT type, name
FROM sys.objects
WHERE N' '+
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(OBJECT_DEFINITION(object_id)
,NCHAR(9),N' ')
,NCHAR(13),N' ')
,NCHAR(10),N' ')
,N'  ',N' '+NCHAR(9))
,N' '+NCHAR(9),NCHAR(9)+N' ')
,NCHAR(9)+N' ',N'')
,NCHAR(9),N'')
LIKE N'% RAISERROR [@0123456789]%' COLLATE Cyrillic_General_CI_AI;
4 июн 19, 14:23    [21901563]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить