1

Я пытаюсь выполнить тот же выбор двумя различными способами.Кэш хранимых процедур SQL Server

Сначала через табличной функцию с использованием хранимой процедуры

SELECT * FROM dbo.DF_PRODUCTS(); 

Во-вторых через openquery, посредством выполнения хранимой процедуры

SELECT * 
FROM openquery([servername], 
       'SET FMTONLY OFF exec DatabaseName.dbo.My_StoredProcedure') 

Проблема заключается в том, что я получаю различные результаты, и я думаю, проблема в кеше хранимых процедур. Кто-нибудь может мне с этим помочь?

+5

Можете ли вы оставить свой сохраненный код proc? – Limey

+1

Если ваша проблема - sp cache, тогда идите вперед n удалите ее с помощью DBCC FREEPROCCACHE или, поскольку кеш-сервер SQL будет временным закрывать ur ssms n, а затем снова открыть его. Как показано в статье @Limey post ur SP code – praveen

ответ

0

Если вы получаете разные результаты от запуска одного и того же кода, а разница «только» (воспринимаемая) заключается в том, что вы запускаете ее через команду OPENQUERY, выполните проверку работоспособности и убедитесь, что OPENQUERY ([имя_сервера ] ...) определенно работает против того же сервера, что и ваш первый запрос.

Наиболее вероятным сценарием является то, что ваш связанный сервер отличается от того, с которым вы работаете на локальном компьютере - например, вы работаете против локальной базы данных по сравнению с базой данных development/test/staging/live.