当我们需要改变一个用户的姓氏,比如从jsmith到jjones ,在我们的Win2000活动目录中,我们会发现Sql Server 2008有一些奇怪的行为。
当jjones通过这个应用程序访问服务器时,Sql Server仍然认为他们的用户名是jsmith ,而他们已经login到名称变更(即他们的工作站,所涉及的应用程序)的所有内容都接受jjones 。 这几乎就像Sql Servercaching凭证一样。
要清楚的是,我们只是改变姓氏,而不是重新创build账户,所以SID应该是相同的(我的假设)。 他们也没有直接login到服务器。
我的两个问题是:如果证书被caching,它在哪里? 其次,我们如何清除caching?
如果我的理解完全倾斜,我错过了什么?
TIA
Jim Little
SQL Server确实caching用户令牌。 你可以强迫他们清理
DBCC FREESYSTEMCACHE('USERSTORE_TOKENPERM');
那是对的。 当你在SQL Server中设置login时,你给它的帐户的用户名和域。 然后进入Windows并获取帐户的SID并将其存储在SQL Server中。 在Windows中更改用户名时,SID保持不变。 当用户login到SQL Server时,SID将从客户机传递到服务器,并根据数据库(以及一些身份validation令牌)进行validation。
SQL Server使用它存储在master数据库中的名称作为显示名称。
要改变这一点,你需要从SQL Server中删除login名,并使用用户新名称重新创build它。