title: Why does one have to specify columns when IDENTITY_INSERT ON?
body: <p>The following script failed to execute</p>
  
  <pre><code>SET IDENTITY_INSERT dbo.MyTable ON
  
  -- the table only has three columns, so there's no ambiguity
  INSERT INTO dbo.MyTable
  VALUES (1, 2, 3)
  
  SET IDENTITY_INSERT OFF
  </code></pre>
  
  <p>Which throws the following warning:</p>
  
  <blockquote>
    <p>An explicit value for the identity column in table 'dbo.MyTable'
    can only be specified when a column list is used and IDENTITY_INSERT
    is ON.</p>
  </blockquote>
  
  <p>The script executes as expected when columns are explicit.</p>
  
  <pre><code>SET IDENTITY_INSERT dbo.MyTable ON
  
  INSERT INTO dbo.MyTable (ColA, ColB, ColC)
  VALUES (1, 2, 3)
  
  SET IDENTITY_INSERT OFF
  </code></pre>
  
  <p><strong>Why must a column list be used?</strong></p>