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

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

Так, видимо я что-то не понимаю :)
У меня в коде программы есть
try/catch, вот этот самый catch записывает в текстовый файлик лога exception.Message.
Текст мессаджа я скопировал и вставил выше в ответе :)
19 дек 16, 14:43    [20022211]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
iljy
Member

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

в большинстве случаев .NET вполне себе демонстрирует исходные ошибки скуля, так что можно начать с малого.
19 дек 16, 14:44    [20022226]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

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

Я даже не предполагал, что делаю именно это. Думал более подробную информацию не получить.

aleks2,

Пойду гуглить про профайлер, спасибо.
19 дек 16, 14:44    [20022232]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
iljy
Member

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

попробуйте catch убрать, там наверняка каскад исключений, нужно сообщение самого внутреннего.
19 дек 16, 14:45    [20022243]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
$connStr = "Server=.\MORETRAVEL;Database=TEMPDB;Integrated Security=True;"

$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = $connStr
$conn.Open()
$command = $conn.CreateCommand()
$command.CommandType = [System.Data.CommandType]::Text

$command.CommandText = 
"
print 1
-- можно закомментить go
go
print 2
"

$res = $command.ExecuteNonQuery()
19 дек 16, 14:49    [20022283]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

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

Ну просто catch не убрать - убрал весь блок try/catch, внутренний код try оставил.
В логе самого Visual Studio вижу:
"Первый этап обработки исключения типа "Microsoft.SqlServer.Management.Common.ExecutionFailureException" в приложении Microsoft.SqlServer.ConnectionInfo.dll"
19 дек 16, 14:51    [20022303]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Владислав Колосов
Member

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

осталось получить текст сообщения, а не факт исключения.
19 дек 16, 14:54    [20022336]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

Откуда:
Сообщений: 19
Владислав Колосов,

как я могу это сделать?
19 дек 16, 14:55    [20022342]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
Bloodskys
iljy,

Ну просто catch не убрать - убрал весь блок try/catch, внутренний код try оставил.
В логе самого Visual Studio вижу:
"Первый этап обработки исключения типа "Microsoft.SqlServer.Management.Common.ExecutionFailureException" в приложении Microsoft.SqlServer.ConnectionInfo.dll"


Да, слабый нонче "разработчик" пошел.

Я те привел скрипт PowerShell (это .NET без подмесу), который НЕ выполняет

print 1
go
print 2

но, если закомментить go - усе выполняется.

ЗЫ. Запомни горе-разработчик: первое и главное достоинство разработчика - умение выводить текст сообщения об ошибке. Полностью.
19 дек 16, 14:56    [20022362]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

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

откуда ж разработчку быть "сильным", если оказывается, что везде врут и все глупые ;)
в частности если бы мне сейчас не сказали, что это "факт исключения", а не "сообщение ошибки", то я бы даже не подозревал, что дальше этого тупика что-то есть.
19 дек 16, 14:58    [20022387]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

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

кроме того, ваше сообщение с PowerShell скриптом не сильно, к сожалению, облегчает мне жизнь: я просто не знаю, как он может мне помочь.
19 дек 16, 14:59    [20022393]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
iljy
Member

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

в конце концов поставьте точку останова на свой catch и изучите объект с информацией ручками. Лучше всего отдельный try сделайте под ExecuteNonQuery.
19 дек 16, 15:00    [20022402]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
В C# можно сделать catch в объект типа Error, из него получить сообщение. Поищите об обработке исключений на C#.
19 дек 16, 15:05    [20022451]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
Bloodskys
aleks2,

кроме того, ваше сообщение с PowerShell скриптом не сильно, к сожалению, облегчает мне жизнь: я просто не знаю, как он может мне помочь.


Вам надо переквалифицироваться в управдомы.


Исключение при вызове "ExecuteNonQuery" с "0" аргументами: "Неправильный синтаксис около конструкции "go"."
строка:17 знак:1
+ $res = $command.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SqlException
19 дек 16, 15:09    [20022485]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

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

при первой же возможности! :)
19 дек 16, 15:22    [20022586]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Bloodskys,

это ещё не плохо, остальных в трактористы определяли
19 дек 16, 15:24    [20022614]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

Откуда:
Сообщений: 19
iljy
Bloodskys,

в конце концов поставьте точку останова на свой catch и изучите объект с информацией ручками. Лучше всего отдельный try сделайте под ExecuteNonQuery.

Так, получилось.
На формочке есть кнопка Start, которая все запускает.
Есть список, в который записываются ошибки, в самом конце каждая ошибка из списка записывалась в файл лога.
Оказывается при первом нажатии на Start процедуры создавались, не было проблем, и когда доходило до записи в лог, оказывалось, что список не инициализирован, так как инициализация происходила только в случае нахождения хотя бы одной ошибки.
Когда жал на Start второй раз - уже выскакивала ошибка существования процедуры с таким именем.
В общем проблема, как оказалось, вовсе не в SQL, а в кривых руках (кто бы сомневался).
Спасибо за наводку - сам бы вряд ли догадался покопаться руками в сообщении исключения.
19 дек 16, 15:26    [20022630]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
Bloodskys
iljy
Bloodskys,

в конце концов поставьте точку останова на свой catch и изучите объект с информацией ручками. Лучше всего отдельный try сделайте под ExecuteNonQuery.

Так, получилось.
На формочке есть кнопка Start, которая все запускает.
Есть список, в который записываются ошибки, в самом конце каждая ошибка из списка записывалась в файл лога.
Оказывается при первом нажатии на Start процедуры создавались, не было проблем, и когда доходило до записи в лог, оказывалось, что список не инициализирован, так как инициализация происходила только в случае нахождения хотя бы одной ошибки.
Когда жал на Start второй раз - уже выскакивала ошибка существования процедуры с таким именем.
В общем проблема, как оказалось, вовсе не в SQL, а в кривых руках (кто бы сомневался).
Спасибо за наводку - сам бы вряд ли догадался покопаться руками в сообщении исключения.


Щас нам расскажут, что GO работает.
19 дек 16, 15:33    [20022682]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

Откуда:
Сообщений: 19
aleks2
Bloodskys
пропущено...

Так, получилось.
На формочке есть кнопка Start, которая все запускает.
Есть список, в который записываются ошибки, в самом конце каждая ошибка из списка записывалась в файл лога.
Оказывается при первом нажатии на Start процедуры создавались, не было проблем, и когда доходило до записи в лог, оказывалось, что список не инициализирован, так как инициализация происходила только в случае нахождения хотя бы одной ошибки.
Когда жал на Start второй раз - уже выскакивала ошибка существования процедуры с таким именем.
В общем проблема, как оказалось, вовсе не в SQL, а в кривых руках (кто бы сомневался).
Спасибо за наводку - сам бы вряд ли догадался покопаться руками в сообщении исключения.


Щас нам расскажут, что GO работает.

Возможно мы пользуемся не одной и той же номенклатурой :)
Для меня "Go работает" означает, что если я программно создаю процедуру с "Go" - я не получаю ошибок и если я потом открываю в SSMS соответственную процедуру - она открывается такой, какой я ее создал: с "Go". В моем случае так и происходит: я создал скрипт, ошибок нет, "Go" в тексте имеется.
А что означает "Go работает" для Вас? :)
19 дек 16, 15:39    [20022727]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
Bloodskys
aleks2
пропущено...


Щас нам расскажут, что GO работает.

Возможно мы пользуемся не одной и той же номенклатурой :)
Для меня "Go работает" означает, что если я программно создаю процедуру с "Go" - я не получаю ошибок и если я потом открываю в SSMS соответственную процедуру - она открывается такой, какой я ее создал: с "Go". В моем случае так и происходит: я создал скрипт, ошибок нет, "Go" в тексте имеется.
А что означает "Go работает" для Вас? :)


Никакой скрипт для MS SQL с GO в качестве разделителей батчей не может правильно выполниться через ExecuteNonQuery().

Как-то так.
19 дек 16, 15:44    [20022756]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Bloodskys
Member

Откуда:
Сообщений: 19
aleks2
Bloodskys
пропущено...

Возможно мы пользуемся не одной и той же номенклатурой :)
Для меня "Go работает" означает, что если я программно создаю процедуру с "Go" - я не получаю ошибок и если я потом открываю в SSMS соответственную процедуру - она открывается такой, какой я ее создал: с "Go". В моем случае так и происходит: я создал скрипт, ошибок нет, "Go" в тексте имеется.
А что означает "Go работает" для Вас? :)


Никакой скрипт для MS SQL с GO в качестве разделителей батчей не может правильно выполниться через ExecuteNonQuery().

Как-то так.

Я не пытаюсь блеснуть умом или как-то оспаривать вашу компетенцию, но Ваши слова на данный момент настолько же обоснованны, как и ответы на StackOverFlow о том, что "Go работает". Имею в виду, что хотел бы почитать где-нибудь об этом.
19 дек 16, 15:46    [20022772]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
aleks2
Guest
Бедолага, даже гууглить не обучен.
https://www.google.ru/?gfe_rd=crl#newwindow=1&q=executenonquery go statements
19 дек 16, 15:48    [20022784]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Bloodskys,

так ссылочкой поделитесь мы почитаем про что там пишут
19 дек 16, 15:49    [20022788]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
invm
Member

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

Есть System.Data.SqlClient.SqlCommand.ExecuteNonQuery() - GO не обрабатывает
А есть Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery() - GO обрабатывает
19 дек 16, 15:59    [20022888]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при программном выполнении процедуры  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 113
aleks2
Bloodskys
пропущено...

Возможно мы пользуемся не одной и той же номенклатурой :)
Для меня "Go работает" означает, что если я программно создаю процедуру с "Go" - я не получаю ошибок и если я потом открываю в SSMS соответственную процедуру - она открывается такой, какой я ее создал: с "Go". В моем случае так и происходит: я создал скрипт, ошибок нет, "Go" в тексте имеется.
А что означает "Go работает" для Вас? :)


Никакой скрипт для MS SQL с GO в качестве разделителей батчей не может правильно выполниться через ExecuteNonQuery().

Как-то так.

Вы похоже просто о разных ExecuteNonQuery() говорите.
aleks2 говорит о SqlCommand.ExecuteNonQuery (судя по коду для PowerShell), а Bloodskys об объекте SMO ServerConnection.ExecuteNonQuery (что указано в стартовом сообщении)

Ну и до кучи: Handling "GO" Separators in SQL Scripts - the easy way
19 дек 16, 16:00    [20022901]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить