It is a really dangerous situation for me as a novice DBA.
Sometimes when I see that there is a deadlock in Activity Monitor screen, if query doesn't ends and stay in suspend state and also a head block, I have to kill that spid. Not always, but sometimes, though rarely, after killing spid lots of data are losing from database. I guess it loses datas from the beginning of the lock till I kill. As I understand Sql server does not save data immediately it waits for a while (some kind of cycle maybe every 15 minutes) and save data when it thinks everything is OK.
For example I took full backup every 6 hours and transaction backups every 10 minutes. Last night it couldn't take backup at 00:00 for a reason and that spid was waiting in suspend state. When I killed that spid at 08:30 in the morning I lost all data from all tables from 00:00 till 08:30..
I have full recovery model and using MsSqlServer2012.
Losing data in production database is very big risk. My question is; How can I be sure, did SQL really saved data before killing an spid?
After doing my database process in code inside using blocks all blocking problems disappeared.