Ошибка преобразования varchar в Int - Sql на сервере против SQL на локальном ПК
У меня есть запрос, требующий преобразования Varchar в INT. В настоящее время я не публикую сам запрос, так как не думаю, что проблема там.
Я настраиваю запрос на своем домашнем ПК, используя резервную копию из файла SQL сервера. У меня Server 2008 R2 установлен на обеих машинах.
Запрос выполняется на моем компьютере 100%, но выдает ошибку при преобразовании varchar в INT при запуске на сервере.
Я думаю, есть где-то настройка, которая не совпадает? Я проверил региональные настройки и проблема не там. есть идеи?
1 ответ
Проблема заключается в том, как оценивается запрос. У вас нет гарантии того, в каком порядке будут оцениваться части запроса, поэтому на одном компьютере после преобразования может произойти фильтр, а на другом - может. Или условия предложения WHERE могут оцениваться в другом порядке
SQL декларативный, а не процедурный. С SQL вы спрашиваете о том, что вы хотите, а оптимизатор запросов учитывает то, что он считает нужным. На процедурном языке (C#, Java и т. Д.) Вы будете контролировать порядок выполнения.
Причина полностью описана здесь: зачем использовать Select Top 100 Percent?