2013-08-14 2 views
-3

EDIT

она есть во второй строке, что я указать, что результаты синтаксически различны, но семантически идентичны. Мой вопрос в том, что почему это может быть результатом использования стандартных скриптов SQL Server Generate.
Ниже приведены две разные копии базы данных, где мы сгенерировали скрипты. Они оба с одного и того же триггера. Опять же, вопрос почему это может быть результатом автоматической генерации скриптов ИЛИ это вопрос невозможности/невероятности и поэтому указывает прямо на ручное вмешательство, то есть на редактирование триггеров/скриптов с целью.Причины синтаксической разницы в сценариях

Мои самые искренние извинения за то, что раньше не объясняли предпосылки.

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

В некоторых случаях я нахожу синтаксические различия, которые дают те же результаты например

BEGIN 
    UPDATE cd_units 
     SET shift_expired_status = 0 
    FROM inserted 
    WHERE inserted.shift_start >= dbo.get_dts() 
     AND inserted.unid = cd_units.unid 
END 

VS

BEGIN 
    UPDATE cd_units 
     SET shift_expired_status = 0 
FROM inserted 
WHERE inserted.unid = cd_units.unid 
    AND inserted.shift_start >= dbo.get_dts(); 
END 

Как вы можете видеть, конечный результат будет тот же, но функционально идентичны.

Этого не должно быть, если кто-то не играет со мной, не так ли? Но это уже потребовало более глубокого расследования этого вопроса.

+0

@AaronBertrand Спасибо, сэр, прошу прощения за то, что я не объяснил вопрос раньше, но вы только что ответили на мой вопрос. – SteveMustafa

+1

Приношу свои извинения за то, что вы не сформулировали вопрос лучше, я благодарю вас за ваши попытки. – SteveMustafa

ответ

2

Команда Generate Scripts просто реплицирует именно то, что хранится в метаданных об объекте. Если они выходят с разными результатами, это потому, что объект отличается. Может быть, кто-то изменил его, потому что у них есть неправильные представления о том, как SQL Server может оптимизировать на основе порядка предложений? У нас нет способа узнать, как и почему это изменилось; мы просто знаем, что SQL Server не изменит его для вас. Вы должны спросить людей, которые несут ответственность за ведение базы данных о том, почему объект мог быть изменен.

1

Я не решаюсь ответить, учитывая, что я не уверен, что полностью понимаю вопрос, но похоже, что вы смущены в двух запросах.

Простые пробелы (которые никак не влияют на запрос), два запроса семантически идентичны. Единственное различие заключается в упорядочении условий в предложении WHERE. Сами условия одинаковы, поэтому вы получите те же результаты.

+0

Спасибо, я улучшил свое описание проблемы, и @AaronBertrand ответил на вопрос, но я благодарю вас в каждом случае, вина за то, что он не объяснил это лучше, – SteveMustafa