• Ah, that's the problem.

    You're taking the principal_id of 'dbo' from database_principals, and passing it to the SUSER_NAME function, which will just return the name of the login from server_principals with a principal_id of 1, which will not surprisingly be 'sa'.

    The principal_id columns in database_principals and in server_principals aren't related in any way, so that's a bit of a red herring.

    This query, which shows which login is the owner of each DB, will show something different, I wager:

    SELECT sp.name as OwnerName, d.name as DatabaseName

    FROM sys.databases d

    INNER JOIN sys.server_principals sp

    ON d.owner_sid=sp.sid

    Cheers!

    EDIT: While I was typing this you posted that you had fixed the issue. The fact that that solution worked means that login was in fact the owner of those DBs. I'm glad you got it resolved!