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

Откуда:
Сообщений: 153
Мальчики, подскажите пожалуйста такая конструкция рабочая?

set @mysql = 'dbcc checkdb (' + @db+ ') WITH NO_INFOMSGS'
EXEC (@mysql)
IF @@ERROR != 0 
BEGIN
   RAISERROR ('Ахтунг!!!Базен нихт арбайтен!!!!',16,1)
   return 
END



Или же даже когда dbcc checkdb выдаст ошибки RAISERROR не получится?

ведь сама dbcc checkdb выполнится и выдаст результат, а не отвалится с ошибкой.
28 мар 17, 15:48    [20342154]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
a.tarannikova,
если не ошибаюсь @@ERROR не будет. Вставляйте результат в таблицу и обрабатываете его
28 мар 17, 15:53    [20342184]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
TaPaK
a.tarannikova,
если не ошибаюсь @@ERROR не будет. Вставляйте результат в таблицу и обрабатываете его


Такое и было предположение, чмоки-чмоки.
28 мар 17, 15:54    [20342198]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
a.tarannikova, дыш
28 мар 17, 15:57    [20342218]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
buser
a.tarannikova, дыш


Браво!
28 мар 17, 16:09    [20342322]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
Бьютифер
Member [заблокирован]

Откуда:
Сообщений: 284
a.tarannikova
set @mysql = 'dbcc checkdb (' + @db+ ') WITH NO_INFOMSGS'
EXEC (@mysql)
IF @@ERROR != 0 
BEGIN
   RAISERROR ('Ахтунг!!!Базен нихт арбайтен!!!!',16,1)
   return 
END
А зачем после RAISERROR что-то писать? Клавиатуру не жалко? Да и вообще THROW начиная с 2012-го.
28 мар 17, 18:21    [20343079]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
Бьютифер
a.tarannikova
set @mysql = 'dbcc checkdb (' + @db+ ') WITH NO_INFOMSGS'
EXEC (@mysql)
IF @@ERROR != 0 
BEGIN
   RAISERROR ('Ахтунг!!!Базен нихт арбайтен!!!!',16,1)
   return 
END
А зачем после RAISERROR что-то писать? Клавиатуру не жалко? Да и вообще THROW начиная с 2012-го.




Буду иметь ввиду.


Мальчики, кстати, подскажите как можно только пару полей достать из DBCC CHECKDB?


Что-то типа такого надо:

SELECT Error, MessageText FROM dbcc checkdb('SOME_DB') with tableresults


Но так не выдает

Данные этих двух полей нужны для вставки в табличку.

В ссылочке, которую привел buser выбираются все поля и вставляются в табличку, но на 2008-м сервере это не работает, кол-во полей разное.

Хочу сделать чтобы только два поля брались и меньшая зависимость от версии сервера чтоб была.
28 мар 17, 18:33    [20343124]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
лолл
Member

Откуда:
Сообщений: 450
Бьютифер
a.tarannikova
set @mysql = 'dbcc checkdb (' + @db+ ') WITH NO_INFOMSGS'
EXEC (@mysql)
IF @@ERROR != 0 
BEGIN
   RAISERROR ('Ахтунг!!!Базен нихт арбайтен!!!!',16,1)
   return 
END
А зачем после RAISERROR что-то писать? Клавиатуру не жалко?


Как это зачем?
RAISERROR ('Ахтунг!!!Базен нихт арбайтен!!!!',16,1)
PRINT 'Продолжаем работать'
28 мар 17, 18:35    [20343134]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
a.tarannikova
Бьютифер
пропущено...
А зачем после RAISERROR что-то писать? Клавиатуру не жалко? Да и вообще THROW начиная с 2012-го.




Буду иметь ввиду.


Мальчики, кстати, подскажите как можно только пару полей достать из DBCC CHECKDB?


Что-то типа такого надо:

SELECT Error, MessageText FROM dbcc checkdb('SOME_DB') with tableresults


Но так не выдает

Данные этих двух полей нужны для вставки в табличку.

В ссылочке, которую привел buser выбираются все поля и вставляются в табличку, но на 2008-м сервере это не работает, кол-во полей разное.

Хочу сделать чтобы только два поля брались и меньшая зависимость от версии сервера чтоб была.



через временную табличку как-то можно, но это не изящно..
28 мар 17, 18:54    [20343204]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
a.tarannikova, просто добавьте недостающие поля. можете создавать разные структуры под разные версии сервера...
через openquery и линксервер на самого себя увы не взлетит... попробуйте clr... подождите когонить...
28 мар 17, 19:05    [20343242]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
a.tarannikova
a.tarannikova
пропущено...




Буду иметь ввиду.


Мальчики, кстати, подскажите как можно только пару полей достать из DBCC CHECKDB?


Что-то типа такого надо:

SELECT Error, MessageText FROM dbcc checkdb('SOME_DB') with tableresults


Но так не выдает

Данные этих двух полей нужны для вставки в табличку.

В ссылочке, которую привел buser выбираются все поля и вставляются в табличку, но на 2008-м сервере это не работает, кол-во полей разное.

Хочу сделать чтобы только два поля брались и меньшая зависимость от версии сервера чтоб была.



через временную табличку как-то можно, но это не изящно..

вы точно знакомы с sql?
28 мар 17, 19:50    [20343393]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
a.tarannikova
подскажите как можно только пару полей достать из DBCC CHECKDB
Никак, увы.

a.tarannikova
через временную табличку как-то можно, но это не изящно..
Ну, вызвали функцию, положили результат в переменную, дальше с ней работаете.
Просто переменные в T-SQL - это множества.

Может, было бы прикольно писать
select Error, MessageText 
from (dbcc checkdb('SOME_DB') with tableresults)
Но вот синтаксис другой.
28 мар 17, 20:55    [20343566]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
TaPaK
a.tarannikova
пропущено...



через временную табличку как-то можно, но это не изящно..

вы точно знакомы с sql?

немного с sql.ru
29 мар 17, 10:20    [20344913]     Ответить | Цитировать Сообщить модератору
 Re: Рабочая ли такая конструкция?  [new]
a.tarannikova
Member

Откуда:
Сообщений: 153
alexeyvg
a.tarannikova
подскажите как можно только пару полей достать из DBCC CHECKDB
Никак, увы.

a.tarannikova
через временную табличку как-то можно, но это не изящно..
Ну, вызвали функцию, положили результат в переменную, дальше с ней работаете.
Просто переменные в T-SQL - это множества.

Может, было бы прикольно писать
select Error, MessageText 
from (dbcc checkdb('SOME_DB') with tableresults)
Но вот синтаксис другой.


Однако жаль, придется под разные версии сервера разные таблички создавать.


Спасибочки за разъяснение
29 мар 17, 10:22    [20344921]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить