SQL Server возвращает пустые поля - PullRequest
0 голосов
/ 24 марта 2011

У меня есть скрипт выбора, который запускается 3 раза в день при установке SQL Server 2005, несколько раз в таблице возврата содержалось ожидаемое количество строк, но без каких-либо значений. Поля целого числа и даты имеют нули, а остальные просто не заполнены.

Поскольку проблема возникает очень редко, нет способа контролировать базу данных, когда сценарий выполняется и не может воспроизвести проблему. Я думаю, что некоторые другие обновления в базе данных вызывают проблемы. Кто-нибудь знает об этой проблеме?

Вот сценарий

SELECT DISTINCT
    URL.Line, 
    RTrim(URL.DescriptionNote) AS [DescriptionNote], 
    SA1.Name AS [Name1], 
    SP1.Designation AS [Designation1], 
    SA2.Name [Name2], 
    SP2.Designation AS  [Designation2],
    RL.DistanceMeters,
    dbo.RouteLinkTransportModeDesc(URL.TransportModeTypeNumber) AS TransportMode, 
    URL.THM,
    URL.FirstWorkedDate,
    URL.LastWorkedDate
FROM #RequiredRouteLink URL
    INNER JOIN StopPoint AS SP1
        ON SP1.JourneyPatternPointGid = URL.StartsAtPointGid
    INNER JOIN StopArea AS SA1
        ON SP1.IsPartOfStopAreaVersionId = SA1.VersionId
    INNER JOIN StopPoint AS SP2
        ON SP2.JourneyPatternPointGid = URL.EndsAtPointGid
    INNER JOIN StopArea AS SA2
        ON SP2.IsPartOfStopAreaVersionId = SA2.VersionId
    LEFT JOIN verRouteLink AS RL 
        ON RL.StartsAtPointGid = URL.StartsAtPointGid 
    AND RL.EndsAtPointGid = URL.EndsAtPointGid 
    AND URL.TransportModeTypeNumber = RL.TransportModeTypeNumber 
WHERE URL.StartsAtPointGid <> URL.EndsAtPointGid 
    AND (RL.EndsAtPointGid IS NULL OR RL.DistanceMeters = 0 OR RL.DistanceMeters IS NULL)
    AND RL.[DeletedDateTime] IS NULL
ORDER BY FirstWorkedDate, THM, TransportMode, Line, DescriptionNote

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Я уверен, что это проблема с данными. Причина, по которой вы получаете пустые поля, скорее всего, LEFT JOIN.

У вас есть 4 INNER JOIN с, любой из которых может привести к тому, что у вас будет пустой набор результатов. Если один или несколько из них не найдут совпадения, у вас нет результатов.

Однако , ваш LEFT JOIN означает, что вы по крайней мере получите список URL.Line, поэтому вероятнее всего у вас было ожидаемое количество строк.

1 голос
/ 24 марта 2011

Можете ли вы запустить низкоуровневую трассировку SQL - максимально отфильтровав ее, чтобы уменьшить загрузку трассировки [например, по приложениям и т. Д.]

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