title: nvarchar change max size on the fly
body: <p>I've always been bothered by the need for max lengths on SQL string columns.  There is some data for which there is no true max length.  For example, let's say you have a field to store someone's first name, and you make it <code>NVARCHAR(50)</code>.  It's always possible (although highly unlikely) that someone has a name longer than 50 chars.</p>
  
  <p>Would it be feasible to change the field's max length on the fly?  What I mean by this is, when you do an <code>INSERT/UPDATE</code>, you check if the person's name is longer than 50 chars, and <code>ALTER</code> the table if need be before you do the <code>INSERT/UPDATE</code>.  (Or perhaps, catch an exception and perform an <code>ALTER</code> if need be).</p>
  
  <p>Would the <code>ALTER</code> be a slow operation if the table had a lot of data in it?</p>
  
  <p>Let's say you alter the column to be <code>NVARCHAR(100)</code>.  Would a <code>SELECT</code> from this table be slower than if you'd made it <code>NVARCHAR(100)</code> from the beginning?</p>