jueves, 20 de febrero de 2020

Detectar consultas que producen bloqueos SQL SERVER

Los procesos bloqueados causados por bloqueos en los objetos de la base de datos son un problema común. El bloqueo asegura la integridad de los datos almacenados dentro de las bases de datos forzando cada transacción SQL Server ejecutada a pasar la prueba ACID que considera que cada transacción debe cumplir con los siguientes requerimientos:
  • Atomicidad –una transacción debe ser totalmente completada cuando se ejecuta, o no se ejecutará.
  • Consistencia – las transacciones deben crear un nuevo estado de datos que sea válido, o si cualquier fallo ocurre, debe retornar todos los datos al estado que estaba antes de que la transacción sea ejecutada/iniciada.
  • Aislamiento – una transacción que está en proceso de ejecución y no ha sido enviada aún, debe ser aislada de todas las otras transacciones.
  • Durabilidad  – los datos enviados deben ser grabados en una forma que mantendrá los datos en un estado correcto si la transacción no se completa, en el evento de una falla o un reinicio del sistema.
Como parte de la prueba ACID, el aislamiento es realizado bloqueando objetos y, como tal, el aislamiento puede afectar una o más filas de datos hasta que la transacción SQL Server que es ejecutada contra ese objeto sea enviada. Esto significa, en la práctica que, bloqueando el objeto, SQL Server evitará que cualquier otro proceso haga algún cambio contra los datos en ese objeto hasta que el bloqueo sea removido, ya sea enviando el cambio o retrotrayéndolo.

Script 1
SELECT blocking_session_id, wait_duration_ms, session_id
FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL


SELECT t.text,*
FROM sys.dm_exec_connections c
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t
WHERE c.session_id in
(
SELECT  session_id
FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL
)

martes, 18 de febrero de 2020

Collection was modified, enumeration operation may not execute XAMARIN FORMS

Este es un error bastante común: modificar una colección mientras la itera usando foreach, tenga en cuenta que foreachusa una IEnumeratorinstancia de solo lectura .
Intente recorrer la colección for()con una comprobación de índice adicional, de modo que si el índice está fuera de los límites, podrá aplicar una lógica adicional para manejarlo. También puede usar LINQ Count()como otra condición de salida de bucle evaluando el Countvalor cada vez si la enumeración subyacente no se implementa ICollection.

Solucione el problema sacando el unitofwork.save fuera del foreach

Tu eres el verdadero amor de tu vida


Cuando echas de menos a alguien y sufres por haberlo perdido tan solo recuerda que en realidad el que verdaderamente extrañas es a ti mismo y no es para menos, al perderte en el otro perdiste a su vez la conexión intima contigo, lo que echas de menos es la sensación que sientes dentro de ti cuando estabas junto a esa persona, echas de menos una parte de ti que crees que solo puedes experimentar a través del otro, sin embargo dado que eres un ser completo puedes revivir eso que tanto echas de menos aquí y ahora, simplemente cierra los ojos respira a profundidad y visualiza algún momento compartido con esa persona ya verás como a poco la sensación que echas de menos florecerá dentro de ti desde adentro con la practica dicha sensación te acompañara donde quiera que vallas estés solo o acompañado y verificaras que eso que pensabas que tenía que ver con el otro en realidad solo tiene que ver contigo mismo , a menos que sepas estar feliz estando solo jamás podrás serlo en compañía de nadie más la auténtica madurez deviene cuando comprendes que tú eres la persona más importante y el verdadero amor de tu vida.


Borja VilaSeca