Description: This indicates a problem with your SQL Server installation. At least one of the databases on your database server has a missing or corrupt owner. The system stored procedure "sp_helpdb", which lists your existing databases, requires a valid owner for every database in order to run.To see what's happening, open Query Analyzer and run: exec sp_helpdb. You will see an error message like the one above.Common Cause:Outside of SQL Server, the database owner's Windows account gets deleted. This sours things within SQL Server, it orphans that database.Solution:Following is the response I've seen two Microsoft reps post on groups. <dbname> is the database with the missing or corrupt owner. 1)
Use <dbname>
sp_changedbowner '[new user not in db already]'
--this will work & sp_helpdb will execute correctly2) Then execute the same query using sa & it will work:
Use <dbname>
sp_changedbowner 'sa'
--The dependent aliases were mapped to the new database owner. Database owner changed.
Of course, you may not know which database has the problematic owner. Here's from a Microsoft Rep (view thread):The database owner SID will become invalid if the owner's Windows account is
deleted. This causes problems with sp_helpdb because of the NULL account
name returned from SUSER_SNAME().. You can identify these problem databases
with the script below and correct the problem by executing sp_changedbowner
with a valid login.
SELECT name
FROM master..sysdatabases
WHERE SUSER_SNAME(sid) IS NULL
Use <dbname>
sp_changedbowner '[new user not in db already]'
--this will work & sp_helpdb will execute correctly2) Then execute the same query using sa & it will work:
Use <dbname>
sp_changedbowner 'sa'
--The dependent aliases were mapped to the new database owner. Database owner changed.
Of course, you may not know which database has the problematic owner. Here's from a Microsoft Rep (view thread):The database owner SID will become invalid if the owner's Windows account is
deleted. This causes problems with sp_helpdb because of the NULL account
name returned from SUSER_SNAME().. You can identify these problem databases
with the script below and correct the problem by executing sp_changedbowner
with a valid login.
SELECT name
FROM master..sysdatabases
WHERE SUSER_SNAME(sid) IS NULL
先结了,免得我忘记。