【问题标题】:SQL Server 2008 SMS vs Visual Studio 2010 Server Explorer resultsSQL Server 2008 SMS 与 Visual Studio 2010 Server Explorer 结果
【发布时间】:2011-05-04 01:43:58
【问题描述】:

我在 Sql Server 2008 Express SMS 中编写并在 Visual Studio 2010 内部使用的 SQL 查询存在问题。

基础知识:网页上有一个输入框。它用于搜索人名、地址、id 等。当我在网站上或内置的 Visual Studio Server Explorer 中使用人名时,例如“Kargul”(编造),它不会t 使用我的存储过程返回任何结果。 但是,在 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;

【问题讨论】:

    标签: visual-studio-2010 sql-server-2008 stored-procedures server-explorer


    【解决方案1】:

    在服务器上运行探查器跟踪以查看通过 VS2010 运行时正在执行的内容;是否有可能没有通过搜索参数?或者你可能需要在你的 proc 中设置一个 SET NOCOUNT ON。

    【讨论】:

    • 对不起,我在 proc 上有一个 SET NOCOUNT ON,我只是将它从示例中排除。我现在加进去了。另外,当我在 VS 中右键单击 Stored Proc 并选择 EXECUTE,手动传入参数时,我在 OUTPUT 窗口中得到 0 个结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多