Da SqlCommand IDisposable implementiert, sollte ein SqlCommand-Objekt theoretisch immer entsorgt werden. Ich persönlich wickle eine using-Anweisung um sie herum. Allerdings sehe ich viele Code, der nie von SqlCommand-Objekte ohne offensichtliche Probleme entsorgt.
Ich verstehe, dass Finalizer schließlich von Garbage Collection aufgerufen werden, aber da das in den meisten Fällen eine ganze Weile dauern kann (und in anderen Fällen nie), warum stürzt der Code nicht ab, weil ihm eine Ressource ausgeht?
In unserer eigenen Codebasis haben wir einen Code, der rund um die Uhr läuft, ohne Befehle auszulösen. Ich würde das gerne bereinigen, aber es ist schwer zu rechtfertigen, wenn es keine Probleme verursacht.