Архив за день: 17.05.2011

На одном из серверов SQL Server 2005 при попытке открыть свойства БД через GUI видим:

Действительно, определить владельца БД не удается:

select owner_sid, suser_sname(owner_sid) from sys.databases where name='model'
owner_sid owner name
0x010500000000000515000000B92ACD62A473F62D825A8A49A3780000 NULL

Вероятно, это был доменный пользователь, которого больше нет в AD.
Изменить владельца процедурой sp_changedbowner в БД model нельзя:

use model; EXEC sp_changedbowner 'sa'

Msg 15109, Level 16, State 1, Line 1
Cannot change the owner of the master, model, tempdb or distribution database.

Можно поменять sid непосредственно в системной таблице, как описано здесь, но это, действительно, нерекомендуемый MS путь.

Так что воспользуемся тем, что при присоединении любой БД её владельцем становится текущий пользователь, и, запустив SQL Server с ключом /T3608, выполним из-под сессии пользователя sa:

EXEC master.dbo.sp_detach_db @dbname = N'model'
GO
CREATE DATABASE [model] ON
( FILENAME = N'E:\DATA\model.mdf' ),
( FILENAME = N'E:\DATA\modellog.ldf' )
FOR ATTACH
GO

Перезапустим SQL Server, убеждаемся:

select owner_sid, suser_sname(owner_sid) 'owner name' from sys.databases where name='model'
owner_sid owner name
0x01 sa
May 2011
M T W T F S S
« Apr   Jun »
 1
2345678
9101112131415
16171819202122
23242526272829
3031