AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 13766
Accepted
jl01
jl01
Asked: 2012-02-24 06:24:34 +0800 CST2012-02-24 06:24:34 +0800 CST 2012-02-24 06:24:34 +0800 CST

AD 中的用户 Windows 登录名已更改,但 SQL 2008 Profiler 中的会话显示旧的 Windows 登录名

  • 772

背景:用户在 Active Directory 中的名称从 Domain\oldname 更改为 Domain\newname 并使用 Domain\newname 成功登录到网络,但 Domain\oldname 出现在 Profiler 的 LoginName 和 NTUserName 列中。

用户的 SQL Server 权限是通过在 SQL Server 安全性中设置的组授予的。

问题:有没有人观察到这种行为并知道为什么 SQL Server 仍在使用 Domain\oldname(sp_who2 显示相同的信息)?

顺便说一句,在这里发布问题之前已经花费了大量时间进行研究,在我看来,Profiler/SQL 2008 R2 没有真正的问题。

sql-server-2008 profiler
  • 6 6 个回答
  • 14248 Views

6 个回答

  • Voted
  1. Best Answer
    Shane Thompson
    2012-02-24T07:48:40+08:002012-02-24T07:48:40+08:00

    我想我无法评论您的问题,因为这是我第一次使用堆栈交换,但这是用户所在的 AD 组吗?有时人们说组是指 SQL 角色,所以我只是想澄清一下。

    我问的原因是因为如果当您将 AD 中的名称更改为 domain\newuser 时,用户在 domain\olduser 的服务器上登录,则您必须进入 SQL 并将登录名更改为 domain\newuser。我已经这样做了,它工作得很好,你不必做任何像重新启动 SQL 那样激烈的事情。我不知道帐户名称是否会随着时间的推移最终更改为新帐户,但我的猜测是否定的。

    但是,我不知道当用户只是具有权限且实际上没有在服务器上登录的 AD 组的一部分时会发生什么。因此需要澄清,以便我可以调查。

    • 5
  2. Wim
    2014-09-10T04:07:50+08:002014-09-10T04:07:50+08:00

    我在 SQL Server 2012 实例(应用了 SP2)中遇到了同样的问题。我还没有找到根本原因,但我们将按照 StanleyJohns 的建议研究 AD 缓存机制。

    偶然我发现了一个简单的解决方案,无需重新启动服务器即可为我工作。我为旧用户名创建了一个 Windows Authenticated 登录名(是的,这有效)然后放弃了它 - 问题解决了。

    在创建/删除之后,我无法再次创建相同的登录名,因此看起来“删除登录名”是另一种将旧用户名从 AD 缓存中强制退出的方式。

    • 2
  3. gbn
    2012-02-24T06:59:29+08:002012-02-24T06:59:29+08:00

    SQL Server 可能需要一些时间来计算
    它根据未更改的“sid”缓存的更改。虽然没有造成任何伤害。

    我不知道确切的规则,但我已经看到它发生了。在极端情况下,如果它很重要,它会在 SQL Server 重新启动后清除

    此外,检查 sys.server_principals 和相关的 sys.database_principals 是否有任何条目。如果用户拥有任何对象(例如,没有模式限定符的 CREATE TABLE),就会发生这种情况。

    • 1
  4. user507
    2012-02-24T06:36:40+08:002012-02-24T06:36:40+08:00

    由于她是 AD 组的成员,因此她仍然可以访问。她在 SQL Server 中显示的旧用户名可能来自登录缓存。

    您可以尝试关闭旧登录名的所有连接,因为它可能会缓存她登录的 SID。由于登录刚刚在 AD 中重命名,我认为它不会更改 SID,因此映射仍然存在,以便 SQL Server 使用旧名称运行。

    • 0
  5. StanleyJohns
    2012-02-24T12:38:27+08:002012-02-24T12:38:27+08:00

    AD 更改需要一些时间才能传播。此外,缓存中的身份验证令牌提供访问权限,同时仍显示较旧的登录名。

    您可以尝试清除缓存:net use * /delete /y在命令行中。

    或者尝试强制 AD 凭据更新:control userpasswords2在命令行。然后转到“高级”选项卡并选择“管理密码”,这将让您修改保存的网络密码。

    这将使您不必重新启动服务器。

    • 0
  6. gusmundo
    2018-07-02T21:12:28+08:002018-07-02T21:12:28+08:00

    在我的情况下,唯一有效的是删除用户并重新添加用户。请注意,您必须检查并删除 SQL 作业以及任何数据库中的 DBO 的所有权。

    • 0

相关问题

  • 连接不同地理区域的数据库的最佳实践

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve