1. ホーム
  2. sql-server

[解決済み] マスターデータベースに記録されているデータベース所有者SIDが、データベース所有者SIDと異なる

2023-03-20 03:09:28

質問

既存のデータベースにtSQLtをインストールしようとすると、以下のエラーが発生します。

マスターデータベースに記録されたデータベース所有者の SID は、データベース '' に記録されたデータベース所有者の SID と異なります。 データベース''に記録されたデータベース所有者SIDと異なります。この状況を修正する必要があります。 ALTER AUTHORIZATIONステートメントを使用してデータベース''の所有者をリセットすることで、この状況を修正する必要があります。 AUTHORIZATIONステートメントを使用してデータベース''の所有者をリセットすることによって、この状況を修正する必要があります。

どのように解決するのですか?

この問題は、バックアップからリストアされたデータベースで、データベース所有者の SID がマスター データベースにリストされている所有者の SID と一致しない場合に発生する可能性があります。 ここでは、エラーメッセージで推奨されている "ALTER AUTHORIZATION" ステートメントを使用する解決策を紹介します。

DECLARE @Command VARCHAR(MAX) = 'ALTER AUTHORIZATION ON DATABASE::[<<DatabaseName>>] TO 
[<<LoginName>>]' 

SELECT @Command = REPLACE(REPLACE(@Command 
            , '<<DatabaseName>>', SD.Name)
            , '<<LoginName>>', SL.Name)
FROM master..sysdatabases SD 
JOIN master..syslogins SL ON  SD.SID = SL.SID
WHERE  SD.Name = DB_NAME()

PRINT @Command
EXEC(@Command)