Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 还原数据库后,数据库所有者是否为空?_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql 还原数据库后,数据库所有者是否为空?

Sql 还原数据库后,数据库所有者是否为空?,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有生产数据库的备份,我将其恢复到本地计算机上 但当我尝试创建图表时,我得到了一条消息,在哪里发现了授权的问题。好的,我去更改数据库所有者,右键单击数据库,选项文件,我注意到所有者字段是空的 为什么为空?这很可能是因为在生产服务器上设置为所有者的登录名在您将其还原到的服务器上不存在 您可以通过创建一个登录名,比如“test_user”,创建一个数据库并使“test_user”成为所有者来重新创建它 备份数据库,删除它,然后删除“测试用户”登录名 还原您删除的数据库,所有者现在将为空。我遇到了这个

我有生产数据库的备份,我将其恢复到本地计算机上

但当我尝试创建图表时,我得到了一条消息,在哪里发现了授权的问题。好的,我去更改数据库所有者,右键单击数据库,选项文件,我注意到所有者字段是空的


为什么为空?

这很可能是因为在生产服务器上设置为所有者的登录名在您将其还原到的服务器上不存在

您可以通过创建一个登录名,比如“test_user”,创建一个数据库并使“test_user”成为所有者来重新创建它

备份数据库,删除它,然后删除“测试用户”登录名


还原您删除的数据库,所有者现在将为空。

我遇到了这个问题,然后意识到它将影响许多数据库,因此我需要某种方法来查找哪些数据库受到影响-使用最新的SQL SSMS 17,我发现如果我是还原数据库的人,sp_helpdb等的常规建议在填充数据库时不起作用所有者名称和您自己的用户名,但数据库属性的“文件”选项卡中的“所有者”字段仍然为空

我使用了SQL探查器,发现它使用:

use MyDatabaseThatsMissingItsOwner;
select suser_sname((select sid from sys.database_principals where name = N'dbo'));
要填充该字段和宾果,如果原始所有者丢失,它将返回一个空字符串