小编IAm*_*rey的帖子

执行访问另一个 SQL 实例的存储过程

如果这个问题重复了另一个已经问过的问题,我深表歉意。我已经搜索了几个小时,但没有找到适合我的情况。

期望的结果

使用 SQL 身份验证的用户对 Server1(默认实例)上的 Database1 具有执行权限,仅此而已。用户执行一个存储过程,作为其进程的一部分,访问 Server1\Instance2 上的数据库 2。我希望它既安全又简单(两者都很重要)。

更多信息

我的 Windows 凭据可以访问两个实例(位于同一台服务器上)。因此,我可以毫无困难地在我的登录名下执行存储过程。但是,我不想给用户我的访问级别。我还需要使用 SQL 登录,因为用户不在域中。

我想要的是为存储过程提供我对该过程的访问级别。由于我是系统管理员,这将为用户提供该过程所需的一切。如果我让它工作,我可能会为此目的创建一个帐户而不是使用我的帐户,但无论哪种方式都是安全的,因为我控制了存储过程的作用。

我尝试将“WITH EXECUTE AS”语句放在我的存储过程中,但无法获取我的 Windows 登录信息。当我把它放进去时,我会在编译存储过程时得到以下错误:

无法以用户 'domain\jdoe' 身份执行,因为它不存在或您没有权限。

用户在两台服务器上都是系统管理员,就像我说的那样,所以我不确定它还需要什么。

我研究了以下内容:

  • 可信 - 我宁愿不公开我的数据库,这看起来很可怕
  • 链接服务器 - 我不想给予额外的权限。我不相信其他数据库可以访问我的数据库,也不相信我的数据库可以访问所有其他数据库。
  • 证书 - 这看起来复杂而困难。除非我能找到一种非常简单的方法来做到这一点并维护它,否则我不确定是否值得麻烦。
  • 所有权链接 - 再次,可怕。当我的目标是防止安全问题时,这看起来会导致更多的安全问题。
  • 镜像用户 - 我什至在另一个服务器实例上创建了相同的(显然不同的 SID)用户并给它相同的密码。不行。

我觉得我错过了一些明显的东西,但我不确定它是什么。因为我整天都在用头撞墙,所以我可能离得太近了,看不到它。如果这里有人能帮我一把或指出我正确的方向,我将不胜感激。我会说我已经阅读了很多 MSDN 文章(我讨厌他们 - 他们似乎从来没有告诉我我想知道什么)。我真正想要的是一个简单、易于遵循的教程,它会引导我了解如何做到这一点。除此之外,即使是我需要走的方向的一般指示也会有所帮助。

sql-server-2008 sql-server

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1