I would guess that either you have a defective solenoid with a partially-shorted activation coil, or you've made a major wiring error somewhere, with suspicion pointing toward the latter.
The reason I'd guess you've done something very wrong is that 12 amp current. Assuming your base drive is 5 volts, a 300 ohm resistor will give you a base current in the ballpark of 10 mA. A reasonable (although slightly optimistic) gain for an NPN transistor (unless you're using a Darlington) is about 100, so I'd expect a current of 1 amp. The fact that you're seeing 12 amps indicates that something, somewhere, is very wrong, and on the basis of what you've told us I can't be any more specific.
EDIT - And, we have a winner. Two, actually. Well, three. First, you are completely misusing your Fluke. It is incapable of measuring current directly. This suggests (since your usage makes no sense) that the "12" you are reading is actually the 12 volt supply. And I have no idea what the 4 volts is. Consequently, there is no way to tell what the circuit is actually doing. Certainly if you're trying to measure current by putting your Fluke in series with the solenoid, that will explain why it doesn't work.
Second, as has been pointed out, by Bruce Abbott among others, a 2N5551 is not suited to your needs.
Third, assuming you do get a decent transistor, it can't be a single transistor, or at least not a BJT. Assuming your Arduino can supply 10 mA of current, you need to be aware that for switching purposes (such as your application) you should assume a gain of 10 to ensure good switching. This puts an upper limit of about 100 mA on your solenoid drive. You might conceivably try for 200 mA, but not much more. The solution? Use either a MOSFET (n-type in this case) or a Darlington NPN such as a TIP140 or TIP141.