• I think this is easy to test for yourself. On dev instance create very small DB, and in it a test table that meets your criteria. Fill the table such that it consumes most of the DB space. Then alter the column to not null. If things work as you fear, this will fail due to inadequate space. But as long as you don't already have nulls I think it will succeed, changing from nullable to non-nullable will not grow table.

    Also easy enough to test the perf claim. Use the same table, create loop that does many updates/inserts/deletes, whatever you need, and time it both ways. I suspect not null performs marginally better than a check, but they're probably so close that it will be hard to discern a difference. I could be wrong.

    There is an old discussion of this on the internet titled "SQL SERVER 2008 . Not Null vs Check Constraint" that offers opinions of smart folks, but nothing conclusive.