Shrinking database or it's data file never recommended as it cause fragmentation within data file. Still, if the free space is huge in data file and there is no space left on drive then you can shrink it using truncate only. Both options specified as notruncate and truncate only are meant for database and data files. Former one only move the allocated pages at end of file to the top where unallocated pages exists which can increase the free space and later one only shrink the end of file and release the free space back to OS based on size given. If no option specified then SQL server uses both method while shrinking database and data files. Shrinking database log file seems ok where some transactions increased the log file size and ate all space over the drive. This is as per me. I hope this answer your question.