Shrink is not working because some transactions (VLF's) might be active. You can query the log_reuse_wait_desc column in sysdatabases to see why log cannot be shrinked. Possible causes
- Active Transaction
- Log Backup
Yes you can control the growth of your log file growth using auto growth settings and your backup strategy.
If you think your database transactions are frequent and huge volumes happen too quickly schedule your transaction log backups based on that frequency. say for eg: Every half an hour / every one hour. Again it depends on your SLA of recovery and downtime
your stakeholders accept. It can be as frequent as 15 mts also incase of banking :)
If you set the auto growth of Log file unrestricted, it will grow for sure but that will cause Disk space issues which in turn create problems for other files residing on that drive. So it is always good to keep the file restricted based on your LUN.
You said you changed from 128MB to 64MB why ???-- If your transactions are frequent you should make it to 256MB(recommended for log) or 500MB. Always remember to keep the setting in MB's rather than '%'. When you specify a lower value for a log file that
has huge transactions, it fills out that space quickly and have to grow 64MB(your case) every time it fills. So good to increase as I mentioned.
Coming back to shrinking once you identified and removed the cause, you can shrink again. Understand that shrinking is simply releasing unused space(INACTIVE) to Disk. This will be effective after a backup as there will be more VLF's marked as inactive.
You need to shrink only if Disk space issue is a Concern else after backup, space will be marked as reusable and log file reuses that for next transaction.