【发布时间】:2013-01-21 20:32:01
【问题描述】:
我有一个 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 数据库与数据库中记录的数据库所有者 SID 不同 'XXXXXX'。您应该通过重置所有者来纠正这种情况 数据库 'XXXXXXX' 使用 ALTER AUTHORIZATION 语句。'
此外,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:0xAAAA
DboUserMapping: sa
DboUserSID: 0x01
我见过的大多数地方都建议我应该使用 ALTER AUTHORIZATION 将“sa”显式设置为数据库所有者。但是,我不确定是否应该将其设置为 sa 或 usrAAAAA,并且我不确定是否有任何可能的影响(我还能破坏什么其他东西?如果有的话)。
对此的任何帮助将不胜感激。
【问题讨论】:
标签: sql sql-server service-broker ownership