Общение с запущенной службой ничем не отличается от методов вызова в любом другом запущенном процессе. Это означает, что вам нужно будет выкопать свои стандартные инструменты для обработки процесса.
Windows Communication Foundation (WCF) будет моим выбором по умолчанию. Вы можете разместить службу WCF в своей службе Windows и выставить ее через конечную точку Named Pipe для эффективной связи.
Рекурсивный cte для спасения ....
Создать и заполнить таблицу образцов (пожалуйста, сохраните нам этот шаг в ваших будущих вопросах):
DECLARE @T as table
(
id int,
name varchar(100),
parent_id int
)
INSERT INTO @T VALUES
(1, 'A', NULL),
(2, 'A.1', 1),
(3, 'A.2', 1),
(4, 'A.1.1', 2),
(5, 'B', NULL),
(6, 'B.1', 5),
(7, 'B.1.1', 6),
(8, 'B.2', 5),
(9, 'A.1.1.1', 4),
(10, 'A.1.1.2', 4)
Cte:
;WITH CTE AS
(
SELECT id, name, name as path, parent_id
FROM @T
WHERE parent_id IS NULL
UNION ALL
SELECT t.id, t.name, cast(cte.path +','+ t.name as varchar(100)), t.parent_id
FROM @T t
INNER JOIN CTE ON t.parent_id = CTE.id
)
Запрос:
SELECT id, name, path
FROM CTE
Результаты:
id name path
1 A A
5 B B
6 B.1 B,B.1
8 B.2 B,B.2
7 B.1.1 B,B.1,B.1.1
2 A.1 A,A.1
3 A.2 A,A.2
4 A.1.1 A,A.1,A.1.1
9 A.1.1.1 A,A.1,A.1.1,A.1.1.1
10 A.1.1.2 A,A.1,A.1.1,A.1.1.2
SELECT id, name, path FROM CTE
? – Mihai Ovidiu Drăgoi 22 March 2017 в 16:20as
. теперь исправлено. – Zohar Peled 22 March 2017 в 16:22