我已經接近完成這項工作。我需要在我們的Intranet上識別用戶。我需要將該用戶的objectGUID
存儲在SQL Server數據庫表中,並能夠再次檢索該記錄。我有幾個不同的應用程序,PHP,ASP Classic和ASP.Net。我認爲在SQL Server中執行AD查找可能是最簡單的。在SQL Server中存儲和檢索Active Directory objectGUID
我能夠通過使用本教程中的步驟http://sql.dzone.com/news/querying-active-directory-thro
我可以檢索objectGUID
和其他任何我需要連接到廣告,但我不知道如何將objectGUID
存儲在數據庫中或如何使用objectGUID
查詢數據庫。我認爲這是數據類型(128長度字節數組?),需要轉換,但我不知道如何去做。
選擇從活動目錄的記錄,並插入到表示出了插入的objectGUID爲varbinary(256)的數據類型
select *
into temp_table
from openquery(adsi, '
select givenName,
sn,
sAMAccountName,
objectGUID
from ''LDAP://dc=somedomain,dc=com''
where sAMAccountName = ''some_user''
')
只是爲了測試,我試圖詢問與AD的objectGUID從上方temp_table檢索。
declare @qry varchar(8000)
declare @var varbinary(256)
set @var = (SELECT objectGUID from temp_table)
set @qry = 'select *
from openquery(ADSI, ''
select
givenName,
sn,
sAMAccountName
from ''''LDAP://DC=somedomain,DC=com''''
where objectGUID = ''''[email protected]+''''
ORDER BY displayName
'')'
exec(@qry)
不返回行...
起初我以爲這是用引號
where objectGUID = '[email protected]+'
正確的語法,但返回了一個錯誤:無效的運算符的數據類型。運算符等於add,類型等於varchar
因此,也許我接近錯誤的語法,或仍然是數據類型問題?
在此先感謝。
謝謝你的回覆,我在後期編輯的詳細信息... – user1633947 2014-11-25 14:02:38
@ user1633947您包括變量時有太多的報價。價值本身並沒有被引用。您有4個單引號可以轉換爲2個單引號,但它已經在一個字符串中,因此等同於字符串中的轉義引號。意思是說,你沒有包含'@ var'的值,而是在說'WHERE objectGUID ='+ @ var +'',它正在尋找「+ @ var +」的字符串文字。我用更正的語法更新了我的答案。 – 2014-11-25 15:06:04