我们正在为我们的系统构建一个管理应用程序,该应用程序的一项功能是为新用户创建新数据库。这个应用程序需要创建数据库、恢复数据库、创建用户、授予权限等 - 所以用户需要有一些非常强大的权限。
我们将这些服务承包给了一家外部公司,我们不想让他们不受限制地访问我们的系统,我们只希望他们能够做我们允许他们做的事情。因此,我们考虑将整个过程封装在一个存储过程中,将此 EXECUTE 授予特定域用户,并使用 EXECUTE AS 'SA' 运行它。
不幸的是,这是不可能的 - SA 不是数据库用户,当我们尝试将其定义为一个时,我们收到错误
Msg 15405, Level 16, State 1, Line 1
Cannot use the special principal 'sa'.
然后我们考虑使用 DBO 并设置跨数据库所有权链接,但这一切都开始令人头疼。有谁知道这样做的优雅方法?