title: Cannot find the principal 'dbo', because it does not exist or you do not have permission
body: <p>This question is focussed on <em>why</em> this has happened.</p>
  <p>We restored a database from another server that has failed.  The restore succeeded, but when we try and run any stored procedure (using 'sa' login, or Windows-based login with full admin access), we got this error:</p>
  <blockquote>
  <p>Cannot execute as the database principal because the principal &quot;dbo&quot;
  does not exist, this type of principal cannot be impersonated, or you
  do not have permission.</p>
  </blockquote>
  <p>Lots of SO users have had the same issue, so I followed the related answers.  For example, both of the following snippets:</p>
  <pre><code>EXEC sp_changedbowner 'dbo';
  ALTER AUTHORIZATION ON DATABASE::MyDb TO dbo;
  </code></pre>
  <p>...result in this:</p>
  <blockquote>
  <p>Cannot find the principal 'dbo', because it does not exist or you do not have permission.</p>
  </blockquote>
  <p>On the previous server (and my restoration dev server) there is no <code>dbo</code> <em>user</em> to reassociate as the owner.  I'm not sure how to locate the <em>principal</em>, but it is listed in the Schema.</p>
  <ol>
  <li>What causes 'dbo' to not be found, or what has happened to the dbo principal?</li>
  <li>Can it be reinstated/recreated?</li>
  <li>Does dbo have to link to an actual login account?</li>
  </ol>