Когда операторы SQL SELECT генерируют исключения? - PullRequest
0 голосов
/ 19 июля 2011

TSQL здесь.В частности, Server 2008 (буквально только что обновленный)

Относительно хранимых процедур: Try / Catch

Я пытался составить список случаев, когда оператор Select генерирует исключение.Те, о которых я могу думать, связаны с синтаксисом (включая нулевые переменные) и делятся на ноль.Я только предполагаю, что их целая лодка загружена за Insert/Alter и Create/Truncate.

Если вы знаете хорошую ссылку на источник, это было бы здорово.

Этот вопрос возник, когда я читал этот исчерпывающий пост в блоге об обработке ошибок для SQL-сервера.Он называется для SQL Server 2000, но я думаю, что большинство из них все еще применяется.

edit

Извините, я хотел связать это ранее.,.

http://msdn.microsoft.com/en-us/library/aa175920(v=sql.80).aspx

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Добавляя к сообщению gbn, вы также можете получить ошибки блокировки, такие как тайм-ауты ожидания блокировки и взаимоблокировки.

Если вы ссылаетесь на таблицы #Temp, вы можете получить ошибки "Invalid object name '#Temp'", потому чтоони не связаны, пока не выполнится инструкция.

Если вы находитесь в режиме READ UNCOMMITTED или WITH (NOLOCK), вы можете получить ошибку: 601 - «Не удалось продолжить сканирование с NOLOCK из-за перемещения данных.»

Если ваш код запускает код .NET, вы, вероятно, получите оттуда исключения.

Если ваш код выбирается с удаленного сервера, вы можете получить совершенно другой набор ошибок о соединениях.

1 голос
/ 19 июля 2011

За исключением ошибок компиляции ("не выполнялся"), у вас есть как минимум эти ошибки времени выполнения

Однако вы всегда хотели бы использовать TRY / CATCH, хотя, конечно же ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...