Реалізував механізм відслідковування посилань на юр.особу з двох таблиць.
Формую ds_ на основі запиту-вибірки з таблиць в якому здійснюється об'єднання записів:
SELECT
[ID],
[ObjectID],
[ObjectName],
[ObjectType],
[ObjectDatasetUSI]
FROM
(SELECT
NEWID() AS [ID],
[tbl_ContactCareer].[ID] AS [ObjectID],
[tbl_ContactCareer].[JobTitle] AS [ObjectName],
N'Кар''єра' AS [ObjectType],
N'ds_ContactCareer' AS [ObjectDatasetUSI]
FROM
[dbo].[tbl_LegalPersons] AS [tbl_LegalPersons]
LEFT OUTER JOIN
[dbo].[tbl_ContactCareer] AS [tbl_ContactCareer] ON [tbl_ContactCareer].[LegalPersonID] = [tbl_LegalPersons].[ID]
WHERE(NOT [tbl_ContactCareer].[ID] IS NULL)
UNION ALL
SELECT
NEWID() AS [ID],
[tbl_AccountBillingInfo].[ID] AS [ObjectID],
[tbl_AccountBillingInfo].[Name] AS [ObjectName],
N'Платіжний реквізит' AS [ObjectType],
N'ds_AccountBillingInfo' AS [ObjectDatasetUSI]
FROM
[dbo].[tbl_LegalPersons] AS [tbl_LegalPersons]
LEFT OUTER JOIN
[dbo].[tbl_AccountBillingInfo] AS [tbl_AccountBillingInfo] ON [tbl_AccountBillingInfo].[LegalPersonID] = [tbl_LegalPersons].[ID]
WHERE(NOT [tbl_AccountBillingInfo].[ID] IS NULL)) AS [U]
ORDER BY 3 ASC
Такий запит нормально відпрацьовує.
Далі спробував доповнити запит ще на один UNION ALL:
SELECT
[ID],
[ObjectID],
[ObjectName],
[ObjectType],
[ObjectDatasetUSI]
FROM
(SELECT
NEWID() AS [ID],
[tbl_Contact].[ID] AS [ObjectID],
[tbl_Contact].[Name] AS [ObjectName],
N'Контакт' AS [ObjectType],
N'ds_Contact' AS [ObjectDatasetUSI]
FROM
[dbo].[tbl_LegalPersons] AS [tbl_LegalPersons]
LEFT OUTER JOIN
[dbo].[tbl_Contact] AS [tbl_Contact] ON [tbl_Contact].[LegalPersonID] = [tbl_LegalPersons].[ID]
WHERE(NOT [tbl_Contact].[ID] IS NULL)
UNION ALL
SELECT
NEWID() AS [ID],
[tbl_AccountBillingInfo].[ID] AS [ObjectID],
[tbl_AccountBillingInfo].[Name] AS [ObjectName],
N'Платіжний реквізит' AS [ObjectType],
N'ds_AccountBillingInfo' AS [ObjectDatasetUSI]
FROM
[dbo].[tbl_LegalPersons] AS [tbl_LegalPersons]
LEFT OUTER JOIN
[dbo].[tbl_AccountBillingInfo] AS [tbl_AccountBillingInfo] ON [tbl_AccountBillingInfo].[LegalPersonID] = [tbl_LegalPersons].[ID]
WHERE(NOT [tbl_AccountBillingInfo].[ID] IS NULL)
UNION ALL
SELECT
NEWID() AS [ID],
[tbl_ContactCareer].[ID] AS [ObjectID],
[tbl_ContactCareer].[JobTitle] AS [ObjectName],
N'Карєра' AS [ObjectType],
N'ds_ContactCareer' AS [ObjectDatasetUSI]
FROM
[dbo].[tbl_LegalPersons] AS [tbl_LegalPersons]
LEFT OUTER JOIN
[dbo].[tbl_ContactCareer] AS [tbl_ContactCareer] ON [tbl_ContactCareer].[LegalPersonID] = [tbl_LegalPersons].[ID]
WHERE(NOT [tbl_ContactCareer].[ID] IS NULL)) AS [U]
ORDER BY 3 ASC
Такий варіант дає стабільно "Разрушающий сбой".
Я перевірив, що будь-яка пара таблиць опрацьовується нормально, і тільки три об'єднання приводять до збою.
Працюю з версією 3.3.2.205
Це глюк, чи є якісь нюанси в налаштуваннях ?