У меня динамический запрос 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) '')
'