В настоящее время я работаю над запросом, зарегистрированным для уведомлений о запросах. В соответствии с правилами обслуживания уведомлений я могу использовать только детерминированные функции в моих запросах, настроенных для подписки. Однако GetDate () (и почти любые другие средства, которые я могу придумать) недетерминированы. Всякий раз, когда я извлекаю свои данные, я хотел бы иметь возможность ограничить набор результатов только соответствующими записями, которые определяются текущим днем.
Кто-нибудь знает обходной путь, который я мог бы использовать, который позволил бы мне использовать текущую дату для фильтрации своих результатов, но не сделать запрос на уведомление о запросе недействительным?
Пример кода:
SELECT fcDate as RecordDate, fcYear as FiscalYear, fcPeriod as FiscalPeriod, fcFiscalWeek as FiscalWeek, fcIsPeriodEndDate as IsPeriodEnd, fcPeriodWeek as WeekOfPeriod
FROM dbo.bFiscalCalendar
WHERE fcDate >= GetDate() -- This line invalidates the query for notification...
Другие мысли:
В нашей базе данных есть таблица элементов управления приложениями, которую мы используем для хранения настроек уровня приложения. Я подумал написать небольшой скрипт, который будет поддерживать запись в актуальном состоянии и в настоящее время. Тем не менее, мое присоединение к этой таблице также не подходит для уведомления, и я не уверен, почему. Я предполагаю, что у него есть что-то, что можно сделать, указав тип текста (имя столбца), что разочаровывает.
Пример кода 2:
SELECT fcDate as RecordDate, fcYear as FiscalYear, fcPeriod as FiscalPeriod, fcFiscalWeek as FiscalWeek, fcIsPeriodEndDate as IsPeriodEnd, fcPeriodWeek as WeekOfPeriod
FROM dbo.bFiscalCalendar
INNER JOIN dbo.xApplicationControls ON fcDate >= acValue AND acName = N'Cache_CurrentDate'
У кого-нибудь есть предложения?
РЕДАКТИРОВАТЬ: Вот ссылка на MSDN , которая дает правила для служб Notification Services