#visual-studio-2010 #sql-server-2008 #stored-procedures #server-explorer
#visual-studio-2010 #sql-server-2008 #хранимые процедуры #сервер-проводник
Вопрос:
у меня проблема с моим SQL-запросом, который я написал в Sql Server 2008 Express SMS и использую внутри Visual Studio 2010.
Основы: На веб-странице есть поле ввода. Он используется для поиска имени пользователя, адреса, идентификатора и т.д. Когда я использую имя пользователя на веб-сайте или внутри встроенного Visual Studio Server Explorer, например «Kargul» (выдуманный), он не вернет никаких результатов с использованием моей хранимой процедуры. Однако в SQL Server 2008 Express SMS та же хранимая процедура возвращает допустимый результат.
Я чего-то не понимаю? Вот моя процедура:
SET NOCOUNT ON;
DECLARE @vars NVARCHAR(50);
SET @vars = '%' @searchTerm '%';
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.FirstName LIKE (@vars)
UNION
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.LastName LIKE (@vars)
UNION
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.Street1 LIKE (@vars)
UNION
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.City LIKE (@vars)
UNION
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.PersonId LIKE (@vars)
UNION
SELECT a.PersonId, Stat.StatusId, a.Honorific, a.FirstName, a.LastName, a.Street1, a.Street2, a.City, a.State, a.Zip, a.Phone, a.Email FROM Persons AS a
JOIN dbo.PersonStatus as Stat
ON a.StatusId = Stat.StatusId
WHERE
a.State LIKE (@vars)
ORDER BY PersonId;
Ответ №1:
Запустите трассировку профилировщика на сервере, чтобы увидеть, что выполняется при запуске через VS2010; Возможно ли, что параметр поиска не передается? Или, может быть, вам нужно установить NOCOUNT в вашей программе.
Комментарии:
1. извините, у меня установлен параметр NOCOUNT в программе, я просто исключил его из примера. Я добавил это сейчас. Кроме того, когда я щелкаю правой кнопкой мыши по сохраненной процедуре в VS и выбираю ВЫПОЛНИТЬ, вручную передавая параметр, я получаю 0 результатов в окне ВЫВОДА.