2013-10-21 32 views
1

我遇到了SQL登錄到sql 2008 r2服務器的問題。SQL Server Windows登錄 - 相同名稱不同用戶(SID)

在活動目錄中創建了一個用戶,我們稱他爲「mydomain \ jon.doe」,並在SQL服務器上創建了一個Windows登錄。

由於與交換這個AD帳戶被刪除,一個新的問題仍然創建名爲「MYDOMAIN \ jon.doe」

我跑到下面從我的SQL Server刪除舊的用戶...

EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.Schemas WHERE [name] = ''' + @FullyQualifiedUserName + ''') BEGIN DROP SCHEMA [' + @FullyQualifiedUserName + '] PRINT ''Deletion '' END') 

    EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.Schemas WHERE [name] = ''' + @SimpleUserName + ''') BEGIN DROP SCHEMA [' + @SimpleUserName + '] PRINT ''Deletion '' END') 

    EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.database_principals WHERE [name] = ''' + @FullyQualifiedUserName + ''') BEGIN DROP USER [' + @FullyQualifiedUserName + '] PRINT ''Deletion '' END') 

    EXECUTE('USE ' + @Database + ' IF EXISTS (SELECT [name] FROM sys.database_principals WHERE [name] = ''' + @SimpleUserName + ''') BEGIN DROP USER [' + @SimpleUserName + '] PRINT ''Deletion '' END') 

但是,當我然後重新添加「mydomain \ jon.doe」到sql服務器它似乎保留舊的SID不是新AD帳戶的SID?

到目前爲止,我已經試過這...但沒有運氣

DBCC FREESYSTEMCACHE('ALL') 

回答

1

一種解決方法可能是在Active Directory中的組只包含「MYDOMAIN \ jon.doe」,並添加SQL登錄此組。

+0

這是正確的預防措施和其他許多原因。如果您對所有AD訪問使用組成員身份,則可以避免這種情況。但是,它不會清除那裏存在的錯誤SID,因爲看起來NoseBag先生可能已經刪除了DB用戶,而不是登錄本身。 –

0

您的代碼顯示了數據庫用戶放置,但您是否從服務器刪除了LOGIN?

[your user drops] 
Use master 
go 
DROP LOGIN [mydomain\jon.doe]; 

如果不是,那麼SQL Server仍然鏈接到具有舊SID的AD用戶。

如果運行

xp_logininfo 'mydomain\jon.doe' 

...你得到錯誤0x534?如果是這樣,那麼你肯定需要這樣做:

  1. 從服務器上的所有數據庫中刪除用戶作爲數據庫用戶;
  2. 刪除登錄;
  3. 重新添加登錄;
  4. 重新添加用戶。

這將清除SQL Server中舊的SID,您將再次正常工作。

相關問題