0

有兩個AD帳戶admin1和admin2。兩者都登錄到相同的機器,都打開SQL Server Management Studio並以相同的SQL用戶身份登錄到同一SQL服務器(使用SQL Server身份驗證,不使用集成安全性),並且都運行相同的查詢:「SELECT * FROM視圖1" 。但是,admin1收到很多結果(正確的結果集),而admin2收到一個空的結果集。這種情況發生在域中的每臺計算機上,無論Windows版本,有線/無線連接等。對於使用相同SQL登錄的不同AD帳戶,SQL Server 2005查詢結果不同

這是爲什麼發生?使用SQL Server身份驗證時,SSMS不應該與Windows帳戶無關?任何幫助,將不勝感激。

+0

您使用模式和admin1映射到與admin2不同的模式的任何機會?另外,嘗試從組合中刪除SSMS,從命令行運行(大約)sqlcmd -s服務器名稱-D myDB -u myUser -p Pwd -Q「SELECT * FROM View1」 – billinkc

回答

1

我遇到的問題是Microsoft Dynamics CRM的結果,而不是SQL Server本身。我使用的是過濾視圖,它將零結果返回給任何不使用Windows身份驗證的用戶。我不知道我是如何得到上面提到的結果的,但是又一次再試一次,無論使用什麼Windows帳戶,我都無法使用SQL身份驗證獲得結果。同樣,使用Windows身份驗證登錄時,我始終能夠獲得結果。

1

您可以使用原始表或通過手動插入記錄來破解底層視圖框架,這些記錄將域名顯示爲您的SQL Server身份驗證登錄標識,並且不授予CRMReaderRole,而是授予標準DQL角色。看一看美妙的fn_FindUserGuid函數,該函數查找所有內部視圖加入的SystemGuid。只要製作這個紀錄和其他幾個你的好東西。如果你對他們的系統進行逆向工程,你會發現有一種欺騙系統的方法。

它基本上只是SystemUserBase,SystemUserPrincipals,UserSettingsBase。

顯然這不是微軟推薦的。 ¯(°_°)/¯然而,當您需要在共享服務器上建立ODBC連接時,您可以在美妙的CRM世界之外向許多用戶提供通用報告,您需要執行此操作。除了將數據複製到另一個數據庫之外,您不會找到另一種方式,但當然要記住,動態是非常動態的,並且經常發生變化。祝你好運同步環境。

在我看來,這個系統顯然是這樣設計的,可以讓用戶使用微軟的產品。如果我擁有微軟,不會說我不會這麼做。當你被迫破解你被迫入侵的時候。

相關問題