Pregunta

Actualmente estoy trabajando en una consulta que está registrada para notificaciones de consulta. De acuerdo con las reglas de los Servicios de notificación, solo puedo usar funciones deterministas en mis consultas configuradas para la suscripción. Sin embargo, GetDate () (y casi cualquier otro medio que se me ocurra) no son deterministas. Cada vez que obtengo mis datos, me gustaría poder limitar el conjunto de resultados a solo registros relevantes, que se determina según el día actual.

¿Alguien sabe de una solución alternativa que pueda usar que me permita usar la fecha actual para filtrar mis resultados pero no invalidar la consulta para notificaciones de consulta?

Código de ejemplo:

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...

Otros pensamientos:

Tenemos una tabla de controles de aplicaciones en nuestra base de datos que usamos para almacenar configuraciones de nivel de aplicación. Pensé en escribir un pequeño script que mantenga un registro actualizado con la hora actual pequeña. Sin embargo, mi unión a esta tabla también está fallando para la notificación y no estoy seguro de por qué. Supongo que tiene algo que ver con especificar un tipo de texto (el nombre de la columna), lo cual es frustrante.

Código de ejemplo 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' 

¿Alguien tiene alguna sugerencia?

EDITAR: Aquí hay un enlace en MSDN que proporciona reglas para los servicios de notificación

¿Fue útil?

Solución

Como resultado, descubrí la solución. Básicamente, estaba invalidando mis intentos de consulta porque estaba convirtiendo un valor como DateTime que lo marca como no determinista. Aunque no llame específicamente a un elenco, haga algo similar a:

RecordDate = 'date_string_value'

Todavía terminas con Date Cast. Esperemos que esto ayude a alguien más que tenga este problema.

Este enlace me ayudó bastante.

http://msdn.microsoft.com/en-us/library /ms178091.aspx

Otros consejos

Una buena manera de evitar esto es simplemente crear una vista que simplemente diga "SELECCIONAR GetDate () AS Now", luego use la vista en su consulta.

EDITAR: no veo nada acerca de no usar funciones definidas por el usuario (que es en lo que he usado el bit 'ver hoy'). Entonces, ¿puede usar un UDF en la consulta que apunta a la vista?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top