为通过 SQL 服务器查询 LDAP 的函数构建查询字符串

Build Query string for function to query LDAP via SQL Server

INPUT_STRING NVARCHAR(MAX)
RETURNS NVARCHAR(MAX)
AS 
BEGIN

DECLARE @NewString NVARCHAR(MAX)
DECLARE @SelectClause NVARCHAR(MAX)
SET @INPUT_STRING = @NewString

SET @SelectClause = 'SELECT *  FROM OpenQuery (' + ' 
  ADSI, ' + '
  ''SELECT  samaccountname
  FROM ''LDAP://' +  @NewString  +
  ')'' + '' AS tblADSI'''

 EXEC sp_EXECUTESQL @SelectClause

输入字符串是这样的

CN=firstName\, Lastname,OU=MyOU,OU=AnotherOU,OU=Accounts,DC=enterprisenet,DC=org

错误信息如前所述。

Msg 105, Level 15, State 1, Line 8
Unclosed quotation mark after the character string ')' + ' AS tblADSI' EXEC sp_EXECUTESQL @SelectClause

如有帮助将不胜感激。

试试这个....

declare @INPUT_STRING nvarchar(MAX); 
SET @INPUT_STRING = 'CN=firstName\, Lastname,OU=MyOU,OU=AnotherOU,OU=Accounts,DC=enterprisenet,DC=org';

DECLARE @NewString NVARCHAR(MAX)
DECLARE @SelectClause NVARCHAR(MAX)
SET @NewString = @INPUT_STRING 

SET @SelectClause = N'SELECT *  FROM OpenQuery (ADSI,'
                 +  N'  ''SELECT  samaccountname '
                 +  N'  FROM ''''LDAP://' +  @NewString  + N''''' '') AS tblADSI' 

检查

PRINT @SelectClause


SELECT *  
FROM OpenQuery (ADSI,  
               'SELECT  samaccountname   
                FROM ''LDAP://CN=firstName\, Lastname,OU=MyOU,OU=AnotherOU,OU=Accounts,DC=enterprisenet,DC=org'' 
               ') AS tblADSI