我有一個鏈接服務器,用於從具有調度的SQL作業代理的特定組織單元中提取用戶詳細信息。如何比較where子句中的varbinary數據類型
該表創建用於保存用戶詳細信息有一列ObjectGUID號碼和類型定義爲varbinary(50)(我不知道爲什麼..)。
該過程通過比較保存的用戶表的ObjectGUID編號以及是否有新編號,然後將新用戶插入表中來檢查是否有新用戶。
但是我注意到比較實際上並不真正正常工作。
SELECT
tbl.objectGUID AS UserGUID
FROM [dbo].[ActiveDirectoryUsers] tbl
WHERE tbl.objectGUID NOT IN (SELECT UserGUID FROM dbo.Users)
當我創建一個新用戶時,新用戶出現在ActiveDirectoryUsers視圖中。
但是,當添加where子句以將結果與Users表進行比較時,結果始終爲空。看起來我需要將varbinary轉換或轉換爲varchar,然後進行比較。我試圖將varbinary轉換爲varchar和uniqueidentifier,但仍然無效。
任何想法我會怎麼做比較?
更新
CREATE VIEW [dbo].[ActiveDirectoryUsers] AS
SELECT "SAMAccountName" AS sAMAccountName, "mail" AS Email,
"objectGUID" AS objectGUID
FROM OpenQuery(ADSI, 'SELECT SAMAccountName, mail, objectGUID
FROM ''ldapconnectionstring.com''')
在用戶表中能夠使用的objectGUID的例子
0x1DBCC071C69C8242B4895D42750969B1
請更新您的問題與字段和他們的類型。什麼是varbinary(50),dbo.Users.UserGUID?或[dbo]。[ActiveDirectoryUsers] .objectGUID? Od都是? – sepupic
如果'dbo.ActiveDirectoryUsers.objectGUID'是'varbinary(50)',是否也是'dbo.Users.UserGUID'?或者它是GUID的字符串表示形式? – Ashigore
ActiveDirectoryUsers.objectGUID未定義。這是一個觀點。我添加了視圖創建腳本。但是,當我看着視野下的SQL管理工作室列,我可以看到這種類型的objectGUID是VARBINARY(4000)。 – akd