3

同じボックスで実行されている.Net/IISWebサイトに対してServiceBrokerがオンになっているSQLServer2008R2の実装があります。

global.asax application_startupイベントが発生してもエラーはスローされませんが、イベントログは毎秒次のようにスパム送信されます。

[dbo]。[SqlQueryNotificationStoredProcedure-e6946263-93b8-445e-9d92-6fbd49a4b089]'キューで実行中'XXXXXX.dbo.SqlQueryNotificationService-e6946263-93b8-445e-9d92-6fbd49a4b089'は次のように出力します。マスターデータベースは、データベース「XXXXXXX」に記録されているデータベース所有者SIDとは異なります。この状況を修正するには、ALTERAUTHORIZATIONステートメントを使用してデータベース「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:sa

DboUserSID:0x01

私が見たほとんどの場所では、ALTER AUTHORIZATIONを使用して、データベース所有者として「sa」を明示的に設定する必要があることを示唆しています。saただし、またはに設定する必要があるかどうかはわかりusrAAAAAません。また、影響が生じる可能性があるかどうかもわかりません(他にどのような問題が発生する可能性がありますか?)。

これに関する助けをいただければ幸いです。

4

1 に答える 1

2

データベース所有者を「sa」に設定することは、他の問題を引き起こさずに機能するのに最も適していますが、ここで説明するように、セキュリティ関連の問題が発生する可能性があります。データベース所有者をsaに設定しない理由はありますか?

また、アプリケーションの要件とアカウントの使用方法によっては、dboとして「usrAAAAA」を削除した場合、ユーザーとしてDBに追加し直す必要があり、権限を付与する必要がある場合もあります。 ('db_owner'など)。これが当てはまり、データベースをTRUSTWORTHY(Service Broker関連の使用法でよく必要とされる)に設定している場合は、代わりに所有者を「usrAAAAA」に設定して、それを機能させる必要があります。

于 2013-02-06T16:29:12.823 に答える