SQLAgentReaderRole 和 SQL AD ID 登录案例影响编辑作业的能力

Bra*_*rad 5 sql-server-2008 security sql-server ssms

我在无法编辑自己的作业的 SQL 2008 服务器上有 AD ID 用户。他们可以创建它们,但是为了编辑它们,他们必须删除它们然后重新添加它们。这个问题在这里解释:http : //blogs.msdn.com/b/sqlserverfaq/archive/2009/06/08/owner-of-the-job-will-not-be-able-to-modify-edit-在-job-in-sql-server.aspx

我做了进一步的研究并发现在我的特殊情况下这是因为我使用 CREATE LOGIN [domain\user] 语法添加了 AD ID 用户。使用该方法,AD ID 的大小写就是您在括号中指定的内容。

无论如何,是否可以使用正确的 Windows AD ID 案例创建用户,以便我不必弄清楚然后修改每个 AD ID 用户的登录名?

此外,我使用此脚本为特定用户获取正确的大小写:

execute as login = 'usa\johndoe'
SELECT SUSER_SNAME()
revert;
Run Code Online (Sandbox Code Playgroud)

但是当我要求用户运行 SELECT SUSER_SNAME() 并给我结果时,它为我返回所有小写字母,但所有大写字母。正确的是全部大写(好吧,为了让该用户能够编辑作业)。

我不知所措,非常沮丧。

-- 我发现获得正确大小写的最佳(唯一?)方法是使用 SQL 界面添加用户,单击搜索,输入 AD ID,然后单击检查名称。对于上面的示例,它返回所有大写字母,尽管该脚本示例返回所有小写字母。

Jon*_*gel 2

无论如何,是否可以使用正确的 Windows AD ID 案例创建用户,这样我就不必弄清楚然后修改每个 AD ID 用户的登录名?

内置的,您已经找到它了——使用 GUI 中的目录搜索界面。或者,您可以使用 SQL CLR(如上所述),或编写 PowerShell 脚本。您当然可以使用任一方法编写一个例程来清理实例。

请注意,GUI 会重写域名(即使输入时大小写不正确),但不会重写登录名本身。(您可以通过手动输入一些内容,然后点击“脚本”按钮来看到这一点。)

但当我要求用户运行 SELECT SUSER_SNAME() 并给我结果时,它为我返回所有小写字母,但返回所有大写字母。正确的是全部大写(...)。

在模拟下,返回输入的SUSER_SNAME()主体名称。如果您使用不同的大小写再次尝试测试,它将返回您输入的确切名称。使用大小写不正确的名称进行模拟的唯一原因是因为 Windows 排序规则表明两者的比较是匹配的。

在不模拟的情况下,有两种情况:(a) 组登录:主体名称从 Windows 提供的内容返回,且大小写始终正确;(b) 个人登录:主体名称从输入的内容返回SQL Server 中的名称(不会发送到 Windows 进行双重检查)。


现在,尽管说了这么多,但我仍无法使用 2008 R2 管理工具重现此问题。如果您仍在运行 2008(非 R2)管理工具,一种选择是尝试升级这些工具,因为这似乎是 Management Studio 本身的一个错误。