#sql #sql-server #duplicates #ssms #ibm-midrange
#sql #sql-сервер #дублирует #ssms #ibm-средний уровень
Вопрос:
В моем офисе работает сервер AS400, который я регулярно запрашиваю для ежедневных задач. У нас есть файл данных из 200 строк, который вызывает у нас проблему, которую я никогда раньше не видел.
При выполнении приведенного ниже запроса в SSMS он выдает 400 строк (дублируя каждую строку в файле), но также отказывается сортировать результаты в любой форме предложения «упорядочить по». При запуске одного и того же SQL внутри AS400 он возвращает то, что вы ожидаете, 200 строк, которые можно сортировать по своему усмотрению.
execute('
select * from lib.file
') at as400
На мой взгляд, это даже не самая странная часть. При запросе одного и того же файла, но с явным указанием каждого поля (например: выберите field1, field2, …) SSMS возвращает 200 строк и позволяет мне сортировать, как мне хотелось бы.
Кто-нибудь видел подобное поведение? В чем разница в выполнении между SELECT * и SELECT (все поля)?
Комментарии:
1. Нет никакой разницы в количестве возвращаемых строк. Происходит что-то еще.
2. При
EXEC ... AT
этом SQL Server зависит от того, что выдает удаленный сервер и драйвер базы данных при передаче запроса. В любом случае SSMS почти наверняка является отвлекающим маневром; это всего лишь интерфейс. Вы можете попробовать то же самоеsqlcmd
для подтверждения.3. вы уверены
as400
, что связанный сервер указывает на тот же сервер, на котором вы запускаете запрос напрямую? для меня это было бы единственным4. да, происходит что-то еще. Что вы делаете в SSMS после
execute( ) at ...
5. @eshirvana да, я уверен, что он указывает непосредственно на тот же сервер. Я использовал SSMS для запроса нашего AS400 уже 2 года без каких-либо сбоев.