LINQ needs to process the complete query, which might have a performance impact in case of complex queries against stored procedures which only need serialize sproc-name and argument data over the network.

LINQ is generic, whereas stored procedures etc can take full advantage of the complete database features.

If there has been a change, the assembly needs to be recompiled and redeployed whereas stored procedures are much simpler to update.

It’s much easier to restrict access to tables in database using stored procedures and ACL’s than through LINQ.