我有一个 SQL Server 2008 R2 实现,为在同一个盒子上运行的 .Net/IIS 网站打开了 Service Broker。
当 global.asax application_startup 事件触发时它不会抛出错误,但是事件日志每秒都会被垃圾邮件发送:
[dbo].[SqlQueryNotificationStoredProcedure-e6946263-93b8-445e-9d92-6fbd49a4b089]'在队列'XXXXXX.dbo.SqlQueryNotificationService-e6946263-93b8-445e-9d92-6fbd49a4b089'上运行输出以下内容:'数据库所有者SID记录在master 数据库与数据库“XXXXXXX”中记录的数据库所有者 SID 不同。您应该通过使用 ALTER AUTHORIZATION 语句重置数据库“XXXXXXX”的所有者来纠正这种情况。
此外,Service Broker 没有正确发送消息(对于 SqlCacheDependency)——它基本上不起作用。
我运行了以下查询并确定存在所有权不匹配:
SELECT
SUSER_SNAME(d.owner_sid) AS OwnerName
,d.owner_sid AS OwnerSID
,dp.sid AS DboUserSID
,SUSER_SNAME(dp.sid) AS DboUserMapping
FROM sys.databases AS d
JOIN sys.database_principals AS dp ON
dp.name = 'dbo'
WHERE d.database_id = DB_ID();
所有者名称:usrAAAAA
OwnerSID: 0xAAAAA
DboUserMapping: 萨
DboUserSID: 0x01
我见过的大多数地方都建议我应该使用 ALTER AUTHORIZATION 将“sa”显式设置为数据库所有者。但是,我不确定它是否应该设置为sa
or usrAAAAA
,并且我不确定是否有任何可能的影响(我还能破坏什么其他东西?如果有的话)。
对此的任何帮助将不胜感激。