Why is my SQL .mdf file 30GB when my data is only 4GB
Shrink file has to move allocated pages situated at the end of the file to the beginning of the file. The file can be shrunk only as much as the offset of the last allocated page. If you did this correctly things should work:

DBCC SHRINKFILE(&lt;DataFile&gt;, 4096);


If you believe you did this correctly but the file stays at the original size, open a support case.