Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 XML парсинг  [new]
iroquai
Member

Откуда:
Сообщений: 43
Подскажите пожалуйста...
Необходимо получить список пользователей и ролей по каждой папке отчётов Reporting Service. Описание списка ролей я смог найти только в столбце XMLDescription таблицы SecData базы ReportServer.

<Policies>	
	<Policy>
			<GroupUserName>
				MYDOMAIN\DEVPROG1
			</GroupUserName>
			<GroupUserId>
			AQUAAAAAAAUVAAAA/TdCQBroe1YH5TsrpC4AAA==
			</GroupUserId>
			<Roles>
				<Role>
					<Name>
						MS Analyst
					</Name>
				</Role>
			</Roles>
		</Policy>
		<Policy>
			<GroupUserName>
				MYDOMAIN\DEVPROG2
			</GroupUserName>
			<GroupUserId>
				AQUAAAAAAAUVAAAA/TdCQBroe1YH5Tsr3WAAAA==
			</GroupUserId>
			<Roles>
				<Role>
					<Name>
						Browser
					</Name>
				</Role>
				<Role>
					<Name>
						Content Manager
					</Name>
				</Role>
				<Role>
					<Name>
						MS Analyst
					</Name>
				</Role>
			</Roles>
		</Policy>
	</Policies>	



Подскажите, как прочитать отсюда имя пользователя (содержимое тэга /Policies/Policy/GroupUserName) и все относящиеся к нему роли (содержимое тэгов /Policies/Policy/Roles/Role/Name)?
12 мар 18, 12:50    [21249312]     Ответить | Цитировать Сообщить модератору
 Re: XML парсинг  [new]
Ilnur26
Member

Откуда:
Сообщений: 15
iroquai,

select 
	p.n.value('GroupUserName[1]', 'varchar(255)')
,	r.n.value('Name[1]', 'varchar(255)')
from @xml.nodes('/Policies/Policy') p(n)
cross apply p.n.nodes('Roles/Role') as r(n)
12 мар 18, 13:21    [21249493]     Ответить | Цитировать Сообщить модератору
 Re: XML парсинг  [new]
iroquai
Member

Откуда:
Сообщений: 43
Спасибо огромное!
12 мар 18, 13:44    [21249615]     Ответить | Цитировать Сообщить модератору
 Re: XML парсинг  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
iroquai, или так
select 
	 n.v.value('../../../GroupUserName[1]', 'nvarchar(50)')
	,n.v.value('.', 'nvarchar(50)')
from @xml.nodes('//Policy/Roles/Role/Name') n(v)
12 мар 18, 13:51    [21249650]     Ответить | Цитировать Сообщить модератору
 Re: XML парсинг  [new]
iroquai
Member

Откуда:
Сообщений: 43
А как сделать тоже самое не с переменной, а с XML столбцом таблицы?
12 мар 18, 14:27    [21249819]     Ответить | Цитировать Сообщить модератору
 Re: XML парсинг  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
iroquai, через cross/outer apply
12 мар 18, 14:53    [21249903]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить