Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос к Active Directory через Linked Server. Проблема 2008 vs 2012  [new]
p0oh!
Member

Откуда:
Сообщений: 41
Запрос такой:
select  
		'HQ\'+sAMAccountName,
		mail,
		displayname,
		department,
		telephoneNumber,
		blockedinad =	case		
						when msExchUserAccountControl=2 then 'Blocked in AD'
						else ''
					end
	from  openquery(adsi, '
				select  
							sn,
							sAMAccountName,
							displayName,
							mail,
							telephoneNumber,
							mobile,
							physicalDeliveryOfficeName,
							department,
							division,
							msExchUserAccountControl
			from    ''LDAP://DC=hq,DC=corp,DC=coolcompany,DC=ru''
			where   objectCategory = ''Person''
					and
					objectClass = ''user''
					')
	where sAMAccountName is not null
	and department is not null

На серверах 2008 R2 выдает ответ нормально - 410 строчек.

На 2012 SP1 проучаю ответ:
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "ADSDSOObject" for linked server "adsi".
Максимум можуно успешно вывести строчек - 376

Подскажите, друзья, пожалуйста, что не так делаю?

в поле where в запросе open query не удается внедрить параметр...
делаю так:
declare @par nvarchar(250)
set @par='paramonov'

select  top 377
		'HQ\'+sAMAccountName,
		mail,
		displayname,
		department,
		telephoneNumber,
		blockedinad =	case		
						when msExchUserAccountControl=2 then 'Blocked in AD'
						else ''
					end
	from  openquery(adsi, '
				select  
							sn,
							sAMAccountName,
							displayName,
							mail,
							telephoneNumber,
							mobile,
							physicalDeliveryOfficeName,
							department,
							division,
							msExchUserAccountControl
			from    ''LDAP://DC=hq,DC=corp,DC=russneft,DC=ru''
			where   objectCategory = ''Person''
					and
					objectClass = ''user''
					and 
					sAMAccountName like ''%'+@par +'%''
					')
	where sAMAccountName is not null
	and department is not null

выдает ошибку
Msg 102, Level 15, State 1, Line 31
Incorrect syntax near '+'.
3 апр 14, 14:43    [15827415]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к Active Directory через Linked Server. Проблема 2008 vs 2012  [new]
mike909
Member

Откуда:
Сообщений: 662
p0oh!
Запрос такой:
					sAMAccountName like ''%'+@par +'%''

выдает ошибку
Msg 102, Level 15, State 1, Line 31
Incorrect syntax near '+'.

Используйте динамику.
3 апр 14, 15:14    [15827596]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к Active Directory через Linked Server. Проблема 2008 vs 2012  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
автор
Incorrect syntax near '+'.

Параметр должен быть константой.
3 апр 14, 17:32    [15828652]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к Active Directory через Linked Server. Проблема 2008 vs 2012  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
А если так?
select name,mail,department,objectsid usersid
	from OpenQuery(ADSI,
'<LDAP://DC=hq,DC=corp,DC=coolcompany,DC=ru>;(&(objectCategory=Person)(objectClass=User));name,samAccountName,mail,department,objectsid')
3 апр 14, 17:38    [15828692]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить