title: SQL Server: Why would i add ";1" to the end of a stored procedure name?
body: <p>i came across a compatibility issue today, as a customer upgraded from Windows XP to Windows 7.</p>
  
  <p>The (12 year old code) is calling a stored procedure on the SQL Server called </p>
  
  <pre><code>ai_nextid
  </code></pre>
  
  <p>Except that when it calls the stored procedure it is using the name:</p>
  
  <pre><code>ai_nextid;1
  </code></pre>
  
  <p>Yes, with a "<code>;1</code>" appended. Apparently the SQL Server driver in Windows 95, Windows 2000, Windows XP, and possibly Windows Vista, are fine with this <strong><em>specifically</em></strong> added suffix. But the SQL Server ODBC driver in Windows 7 is different, and causes the error:</p>
  
  <blockquote>
    <p>General SQL Error.<br>
    [Microsoft][ODBC SQL Driver][SQL Server]Could not find stored procedure 'ai_nextid;1'.<br>
    [Microsoft][ODBC SQL Driver][SQL Server]Indicator variable requried but not supplied'. </p>
  </blockquote>
  
  <p>With native error <a href="http://msdn.microsoft.com/en-us/library/aa258751(SQL.80).aspx" rel="noreferrer">2812</a>.</p>
  
  <p>This brings up 4 questions:</p>
  
  <ul>
  <li>why were we appending <code>;1</code> to the end of the stored procedure name? (what does it accomplish)</li>
  <li>why was the SQL Server driver ignoring it?</li>
  <li>why was a breaking change made in Windows 7?</li>
  <li>is the breaking compatibility change documented?</li>
  </ul>
  
  <p>The last two questions would probably be the same, since if they document it, they would justify it.</p>