Не удалось подготовить заявление OpenQuery - PullRequest
0 голосов
/ 24 декабря 2018

У меня динамический запрос SQL с использованием openquery, выдающий синтаксическую ошибку.Оператор будет работать очень хорошо при запуске через окно запроса (без динамического SQL), но при попытке запуска через агент SQL он завершится неудачно с -

Не удалось подготовить оператор (ы).[SQLSTATE 42000] (Ошибка 8180) Неверный синтаксис рядом с '='.[SQLSTATE 42000] (Ошибка 102)

Поставщик OLE DB "SQLNCLI11" для связанного сервера "_________" вернул сообщение "Не удалось выполнить отложенную подготовку.".[SQLSTATE 01000] (ошибка 7412).Шаг не пройден.

SELECT @SQL = N'
Insert into ' + @ToDatabase + '.dbo.UserUsages
(Date, AppCode, UserName, EriAccountId, [Count], SubscriptionCode)

SELECT Timestamp
, Appcode
, Username
, EriAccountId
, [Count]
, SubscriptionCode
FROM openquery([' + @ServerSource + '],
''[Timestamp] = CAST([Timestamp] AS date)
, AppCode
, UserName
, EriAccountId
, [Count]= COUNT(MethodName) 
, SubscriptionCode
FROM ' + @FromDatabase + '.dbo.[Log]
'
SELECT @SQL2 = N'
WHERE   
(MethodName = ''''GetSalaryTable'''') OR            
(MethodName = ''''GetSalaryByLevelTable'''') OR     
(MethodName = ''''GetEmployees'''') OR              
(MethodName = ''''GetBenchmarkList'''') OR          
(MethodName = ''''GetAdvancedReport'''') OR         
(MethodName = ''''GetGeoList'''') OR            
(MethodName = ''''GetComparableCompanies'''') OR    
(MethodName = ''''GetComparisonList'''') OR     
(MethodName = ''''GetGAChart'''') OR            
(MethodName = ''''GetOesData'''') OR            
(MethodName = ''''GetTwoCityComparison'''') OR      
(MethodName = ''''GetSalaryFromC3Norms'''') OR      
(MethodName = ''''GetCoLs'''') OR                   
(MethodName = ''''GetPerDiems'''') OR               
(MethodName = ''''GetTwoCityValues'''')  OR         
(MethodName = ''''DisabilityFilterJobs'''') OR      
(MethodName = ''''ProcessAnalysis'''') OR           
(MethodName = ''''GetFormTabs'''') OR               
(MethodName = ''''GetReportDataForJob'''')          


GROUP BY CAST(Timestamp AS date), AppCode, UserName, EriAccountId, 
SubscriptionCode
HAVING      
(SubscriptionCode IS NOT NULL) 
AND (CAST(Timestamp AS date)) BETWEEN ''''' + 
CONVERT(NVARCHAR,CAST(DateAdd(dd, +1, @startDate) AS DATE))  +''''' and 
CAST(DateAdd(dd, -1, GETDATE()) AS DATE) '') 

'

1 Ответ

0 голосов
/ 28 декабря 2018

Вам нужно SELECT до [Timestamp].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...