【问题标题】:Build Query string for function to query LDAP via SQL Server为函数构建查询字符串以通过 SQL Server 查询 LDAP
【发布时间】:2015-03-31 20:25:28
【问题描述】:
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

错误信息如已读取。

消息 105,级别 15,状态 1,第 8 行
字符串 ')' + 'AS tblADSI' 后的非闭合引号 EXEC sp_EXECUTESQL @SelectClause

任何帮助将非常感谢。

【问题讨论】:

  • 为什么不直接针对您的 Active Directory 实例发出此查询?
  • 打印出你的@SelectClause,这样你就可以看到你的单引号在哪里被嘘了。

标签: sql sql-server active-directory ldap


【解决方案1】:

试试这个....

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多