Отключить сообщения в наборе результатов SQL2008 - PullRequest
2 голосов
/ 06 февраля 2009

далее к этим двум вопросам, есть ли способ отключить сообщения, которые могут отправляться вместе с набором результатов в SQL2008?

(обратите внимание, что это не имеет ничего общего с настройкой ANSI_WARNINGS. Или NOCOUNT .)

Спасибо за любую помощь.

Редактировать: это не проблема с настройками совместимости или владельцами таблиц. И это не имеет ничего общего с NOCOUNT . Поверь мне.

Ответы [ 5 ]

11 голосов
/ 21 февраля 2009

Нет, нет способа отключить все сообщения, которые отправляются вместе с наборами результатов. Включение / выключение nocount не влияет на эти типы сообщений.

0 голосов
/ 24 февраля 2009

Вы можете обернуть его в попытке поймать ... подробнее в книгах онлайн

Например:

CREATE TABLE Test_ShortString (

ShortString varchar(10) NULL

)

begin Try

insert into 
Test_ShortString (ShortString) 
values ('123456789012345')

End Try

Начни ловить

--Select Error_Number() as ErrorNumber

концевая защелка

0 голосов
/ 24 февраля 2009

Вы пытались выполнить тот же запрос CONTAINS без «ИЛИ»?

т.е:.

SELECT * FROM my_table
WHERE CONTAINS(my_column, 'a monkey')  -- "a" is a noise word

вместо

SELECT * FROM my_table
WHERE CONTAINS(my_column, 'a OR monkey')  -- "a" is a noise word
0 голосов
/ 17 февраля 2009

Изменили ли вы уровень совместимости при обновлении с SQL 2000 до 2008? Если это какое-то предупреждение о обратной совместимости, которое может его вылечить.

0 голосов
/ 17 февраля 2009

Вам все равно нужен NOCOUNT в теле Sproc (я ценю, что вы проверили его с и без)

В подобных обстоятельствах я получаю реальный вызов Sproc (либо из Debug в моем приложении, либо с помощью SQL Profiler), а затем подключаю его к SSMS или к любой IDE, которую вы используете, оборачивая его в транзакцию ROLLBACK не может случайно внести какие-либо изменения). Примечание. Войдите в SQL Server, используя IDE, используя те же учетные данные, что и приложение.

BEGIN TRANSACTION
EXEC StaffEnquirySurnameSearch @searchterm = 'FOOBAR'
ROLLBACK

и посмотри, что получишь. Используйте режим ТЕКСТ для вывода, а не режим GRID, который может что-то скрыть

Просто чтобы показать, как я думаю, NOCOUNT должен быть добавлен к вашему SProc:

CREATE PROCEDURE StaffEnquirySurnameSearch
    @searchterm varchar(255)
AS

SET NOCOUNT ON

SELECT  AD.Name, AD.Company, AD.telephoneNumber, AD.manager, CVS.Position,
    CVS.CompanyArea, CVS.Location, CVS.Title, AD.guid AS guid,
    AD.firstname, AD.surname
FROM ADCVS AD
LEFT OUTER JOIN CVS ON
    AD.Guid=CVS.Guid 
WHERE AD.SurName LIKE @searchterm
ORDER BY AD.Surname, AD.Firstname
GO

Я отмечаю, что вы не ставите префикс таблиц перед владельцем базы данных (чаще всего "dbo"), что может означать, что есть дополнительные копии, принадлежащие whomever, и что они оказываются значениями по умолчанию с точки зрения разрешений приложений, хотя Я не думаю, что это изменит наборы результатов [между версиями SQL]. Однако то же самое относится и к владению Sproc, и там вы можете вызывать более раннюю версию, созданную для другого владельца.

То же самое, где ваше имя Sproc определено в вашем коде ASP.NET (который я не могу найти в вашем связанном вопросе) также должно иметь владельца, то есть

EXEC dbo.StaffEnquirySurnameSearch @searchterm = 'FOOBAR'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...