如何在链接服务器上使用CTE递归替换传递查询中的参数?

问题描述 投票:0回答:1

我如何用可以使用CTE遍历A-Z的变量替换A *?

SELECT * FROM OpenQuery (
ADSI,
'
SELECT sAMACCOUNTNAME,mail
FROM ''LDAP://DC=abc,DC=ad,DC=def''
WHERE objectClass = ''User'' AND sAMACCOUNTNAME=''A*''
')
sql-server sql-server-2014
1个回答
0
投票

我确实有解决方案,可以手动从A-Z进行查询。但我希望有一个更优雅的解决方案。

CREATE VIEW [dbo].[ADUpdateData]
AS
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''A*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''B*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''C*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''D*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''E*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''F*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''G*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''H*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''I*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''J*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''K*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''L*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''M*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''N*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''O*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''P*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''Q*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''R*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''S*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''T*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''U*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''V*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''W*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''X*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''Y*'''  )    UNION ALL
SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM OPENQUERY( ADSI, 'SELECT employeeId, SAMAccountName, givenname, sn, Mail, CN FROM ''LDAP://DC=abc,DC=ad,DC=def'' WHERE objectCategory =''Person'' AND SAMAccountName =''Z*'''  );   
GO
© www.soinside.com 2019 - 2024. All rights reserved.