在 SQL Server 中设置数据库所有者是否有害?

bop*_*979 8 security sql-server

我们的一个 SQL 服务器上有一堆没有所有者的数据库。一般来说,给他们一个有害吗?例如:

USE dbName;
GO

EXEC sp_changedbowner 'sa';
GO
Run Code Online (Sandbox Code Playgroud)

我知道 sa 可能不是最好的选择,但这只是一个例子。我主要担心的是,在没有所有者的情况下创建所有者是否会导致当前可以正常连接的软件出现问题。

Aar*_*and 12

您应该使用 DDL 而不是向后兼容存储过程:

ALTER AUTHORIZATION ON DATABASE::dbName TO sa;
Run Code Online (Sandbox Code Playgroud)

并且数据库的所有者(没关系sa)可能不是您的应用程序使用的帐户,因此这应该不会对您的应用程序产生任何影响。如果是,那么您应该更新您的应用程序使用的连接字符串(这不应该是一个重大更改)并确保该帐户具有足够的 - 但不是上帝 - 特权。

  • 不,总有一个所有者(它可能无效)。您的情况意味着它由旧服务器上存在但尚未迁移到新服务器上的登录名拥有。只需将它们全部设置为 `sa` 并完成它,除非您出于其他原因需要这些登录名(但是,如果登录名对于当前服务器上的存在并不重要,那么它是否应该拥有数据库,没关系现在应该拥有它,因为它已被移动)。 (4认同)

Mik*_*Fal 6

通过声明数据库所有者,您可以让该用户完全控制数据库。数据库所有者可以完全访问所有表中的所有数据,能够访问CREATE/ALTER/DROP数据库中的对象等。这可能是好的也可能是坏的,这取决于您的要求。通常,我将所有数据库所有者设置为“sa”以提供默认所有者。由于“sa”已经拥有系统管理员权限,因此授予数据库所有权不会授予升级的安全性。