Я столкнулся с проблемой в хранимой процедуре sql. у меня есть хранимая процедура, которая содержит динамический запрос sql, создание временных таблиц, вставку данных в эти временные таблицы. в моей локальной сети результат этой хранимой процедуры отображается нормально. но в производственной среде порядок результатов изменен. у меня есть только разрешение на выбор для этого производства, поэтому я не могу запустить этот sp в базе данных производства. может ли кто-нибудь предложить какое-либо решение. есть ли возможность запустить этот SP и просмотреть результат в production sp. спасибо
используя хранимую процедуру, найдите причину беспорядка в результирующем наборе
Ответы (3)
Боюсь, ваш вопрос не очень конкретен, но если вы полагаетесь на порядок результатов и не используете ORDER BY
в запросе, который возвращает результаты (в вашем случае это, вероятно, последний оператор), тогда вы должен. Порядок результатов не гарантируется, если вы не используете ORDER BY
.
Если вы уже это сделали, возможно, вы могли бы опубликовать соответствующие части вашего запроса.
Я бы проверил, что сопоставление двух баз данных одинаково. Предполагая, что сервер MS Sql, щелкните правой кнопкой мыши узел базы данных в Mgmt Studio и просмотрите свойства. Сопоставление будет что-то вроде SQL_Latin1_General_CP1_CI_AS
.
Если они не совпадают, вполне возможно, что «естественный» порядок сортировки будет другим, если только вы не укажете явным образом ORDER BY
clause.
SELECT *
, но ORDER BY
перечисляет определенные столбцы. Вы пытались увидеть, что происходит, когда вы явно заказываете КАЖДЫЙ столбец? Затем удалите их из пункта ORDER BY
1 на 1, пока порядок сортировки не изменится — в этот момент вы знаете, что такое проблемный столбец.
- person Widor; 07.04.2011
Я могу думать о двух возможностях с головы без дополнительной информации:
1) Производство и ваша локальная среда настроены по-разному, особенно в отношении сортировки базы данных tempdb (которая будет сортировкой по умолчанию, используемой временными таблицами, если вы не укажете иное в их операторе CREATE). Поэтому любой порядок символьных полей будет вести себя по-разному.
2) Вы вообще не выполняете какой-либо конкретный порядок, и в этом случае порядок «по умолчанию» диктуется многими вещами и вряд ли будет одинаковым для разных серверов.