tastini Ответов: 1

Sql server с использованием openrowset без возврата данных


я получил вложенную хранимую процедуру и пытаюсь вернуть какой-то отчет из процедуры хранилища.
Если я запускаю код ниже, он возвращает результат.
SET FMTONLY OFF; SET NOCOUNT ON; EXEC [DbName].[dbo].[usrGetBalanceBystore]
		@Customer= "00000000-0000-0000-0000-000000000000",
		@Store= "00000000-0000-0000-0000-000000000000"

я могу найти данные из приведенного выше выбора.
и в то же время, если я запускаю код ниже, он возвращает только заголовок столбца без результата.

Select * from OPENROWSET('SQLNCLI',
'DRIVER={SQL Server};Server=Server;Database=DbName;Uid=sa;Pwd=password',
  'SET FMTONLY OFF; SET NOCOUNT ON; EXEC [DbName].[dbo].[usrGetBalanceBystore]
		@Customer= "00000000-0000-0000-0000-000000000000",
		@Store= "00000000-0000-0000-0000-000000000000"')

Я делаю что-то не так с вышеизложенным? заранее спасибо.

Что я уже пробовал:

Попробуйте полностью изменить имя базы данных. Сделал FMTONLY OFF, я видел это с другого форума. Не повезло. Любые предложения помогут мне.

Wendelius

Возвращает ли процедура несколько результирующих наборов?

tastini

Нет только одного набора, вторая строка возвращает @returnvalue 0 как обычная процедура.

1 Ответов

Рейтинг:
1

Wendelius

Мало что нужно проверить или протестировать:
- Попробуйте с помощью простого запроса (а не вызова процедуры), что все действительно работает.
- Проверьте, что вы подключаетесь к правильному экземпляру и базе данных. Например, вы можете запросить @@SERVERNAME
- Если речь идет о транзакциях, попробуйте переместить этот вызов за пределы транзакции.


tastini

1. Я попробовал с простой работы запроса идеальным.
2. от экземпляра я не получил никакой ошибки , если я изменяю на что-то другое его показ ошибки.
3.не понял этого пункта.

Wendelius

для пункта 2. проверьте, что вы находитесь в правильной базе данных и экземпляре. Например запустить и проверить результат

Выберите * из OPENROWSET('SQLNCLI',
Водитель '={SQL-сервера};сервер=сервер;базы данных=Имя_бд;Уид=СА;по pwd=пароль',
'ВЫБЕРИТЕ @@ИМЯ_СЕРВЕРА)

для пункта 3, например, следующая ситуация

начать транзакцию
выберите * из openrtowset...)
...
совершению сделки

попробуйте переместить команду

выберите * из openrtowset...)
начать транзакцию
...
совершению сделки

tastini

Выберите @@SERVERNAME, когда я запускаю его, показывая другое имя, чем мое имя экземпляра/сервера. но @servername, который показывает, что я применил, но вернул ошибку неправильного сервера.
пункт 3 я пробовал здесь, там, кроме моей процедуры, все работает хорошо.