主数据库中记录的数据库所有者SID与数据库所有者SID不同

主数据库中记录的数据库所有者SID与数据库所有者SID不同

本文介绍了主数据库中记录的数据库所有者SID与数据库所有者SID不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试将tSQLt安装到现有数据库上时,出现以下错误:

When I try to install tSQLt onto an existing database i get the following error:

推荐答案

当从备份还原的数据库且数据库所有者的SID与主数据库中列出的所有者SID不匹配时,可能会出现此问题.这是使用错误消息中建议的"ALTER AUTHORIZATION"语句的解决方案:

This problem can arise when a database restored from a backup and the SID of the database owner does not match the owners SID listed in the master database. Here is a solution that uses the "ALTER AUTHORIZATION" statement recommended in the error message:

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)

这篇关于主数据库中记录的数据库所有者SID与数据库所有者SID不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 23:38