小编mat*_*azr的帖子

DROP LOGIN 在 SQL Server 2014 上失败

我们有一个所有者为“dbowner”的数据库。我们的安装过程删除用户“dbowner”的登录名并重新创建它。

在任何其他版本的 SQL Server 上,以下 SQL 查询成功:

USE [master]
DROP LOGIN 'dbowner'
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2014 上,相同的查询返回以下错误:

登录 'dbowner' 拥有一个或多个数据库。在删除登录之前更改数据库的所有者。

谁能解释为什么这在 SQL Server 2014 上会有所不同?删除登录适用于所有其他版本的 SQL Server(2005、2008 和 2012)。

是否有任何设置可以强制在 SQL Server 2014 上使用相同的设置?

更新:

我可以用一个使用 Windows 用户的例子来复制这个。有任何想法吗?

CREATE LOGIN [comp\winuser] FROM WINDOWS;
GO
CREATE DATABASE mydb;
GO
ALTER AUTHORIZATION ON DATABASE::mydb TO [comp\winuser];
GO
DROP LOGIN [comp\winuser];
GO
Run Code Online (Sandbox Code Playgroud)

更新 2:

谢谢您的意见。我同意删除所有者的登录名是不可取的(但除 SQL Server 2014 外,其他地方的 Windows 用户都可以使用)。然而,我们的安装脚本目前依赖于它,极其复杂的数据库安装过程是 15 年前某个人制作的(他不再与我们合作了)。如果可能(只要它有效),我们希望避免更改该领域。

在我看来,我们有三个选择:

  1. 使 SQL 2014 像以前的版本一样运行并保持脚本不变。我们更喜欢这个选项,我在这里发帖看看是否可以做到。
  2. 将所有者更改为其他用户,删除并创建所有者登录并将所有者移回。这是一个黑客,但可能会奏效。
  3. 改变我们处理用户的方式并停止放弃所有者的登录。这将是正确的方法,但也是最大的变化。

security sql-server users logins sql-server-2014

3
推荐指数
1
解决办法
7702
查看次数

标签 统计

logins ×1

security ×1

sql-server ×1

sql-server-2014 ×1

users ×1