我有一个链接服务器,用于从具有调度的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