Добрый день! Появилась такая проблема: Начал через некоторое время появляться у некоторых пользователей различные ошибки такого рода(не открываеться вкладки например договора) повисает и все. Есть предположение что это может возникнуть из за добавления новых в полей в таблицу и выборку и датасет? Но я не уверен. Подскажите мож кто сталкивался с подобными проблемами???

Нравится

21 комментарий

Может проблемы с сетью? У одного из клиентов была подобная проблема.

Нет проблем с сетью нет. Прикол в том что постепенно все пользователи начинают так глючить. Лечиться только созданием нового пользователя.

А какая версия ? Обычно, при описании ошибки, оговаривают версию. Это избавляет от лишних вопросов и предположений :)

У меня версия 3.0.2.203 субд MS 2008

Вполне может быть, что проблема новых полях. Или ошиблись в SelectQuery и идет запрос, который вешает систему. Проанализируйте запрос, который идет непосредственно перед зависанием системы.

А не подскажите как проанализировать. Если я не ошибаюсь с помощью Profile но я его в MS 2008 ненашел?

Если бы просто ошибки со временем появлялись, а не висло все наглухо, то я бы предположил, что некоторые поля набора данных, которые вы используете в скриптах просто не выбираются в запросе.

Для таких полей в запросе необходимо выбрать "всегда выбирать в запросе". Например где-то использовалась проверка поля "тип". А пользователь скрыл колонку "тип" в реестре и все! "Оптимизатор запроса" не даст запросу выбрать данные, которые не нужны для отображения (в данном случае "тип"). А скрипт будет пытаться проверить значение несуществующего поля. Так что, как и советовал Underscore - проверьте хорошенько запросы.

можно в администраторе открыть сервис sq_****, нажать кнопку "просмотр" и попробовать его выполнить - если есть ошибки, они уже здесь появятся

ООО "Лайнсервис"
www.ls-crm.ru

Да профайлером. Не знаю как в 2008, но в 2000 и 2005 ярлык к нему был вынесен в "Программы". Можно выложить запрос сюда, если сами не сможете найти ошибку.

Вот еще информация для размышления: Эти косяки происходят только с пользоваелями которые не имеют полных прав доступа к таблицам. У админов все нормально. И еще ошибка по связанная с пользователями. Есть запрос :
SELECT
[tbl_Contract].[ID] AS [ID],
[tbl_AccountCustomer].[Name] AS [Title],
[tbl_Contract].[ContractNumber] AS [ContractNumber],
[tbl_Contract].[ContractTypeID] AS [ContractTypeID],
[tbl_ContractType].[Name] AS [ContractTypeName],
[tbl_Contract].[ParentContractID] AS [ParentContractID],
[tbl_Contract].[OpportunityID] AS [OpportunityID],
[tbl_Opportunity].[Title] AS [OpportunityTitle],
[tbl_Contract].[ContractStatusID] AS [ContractStatusID],
[tbl_ContractStatus].[Name] AS [ContractStatusName],
[tbl_Contract].[OwnerID] AS [OwnerID],
[Owner].[Name] AS [OwnerName],
[tbl_Contract].[StartDate] AS [StartDate],
[tbl_Contract].[DueDate] AS [DueDate],
[tbl_Contract].[CustomerID] AS [CustomerID],
[tbl_AccountCustomer].[Name] AS [CustomerName],
[tbl_Contract].[BillInfoID] AS [BillInfoID],
[tbl_AccountBillingInfo].[BankAccountNumber] AS [BillInfoName],
[tbl_Contract].[BillingFrequencyID] AS [BillingFrequencyID],
[tbl_Contract].[CurrencyID] AS [CurrencyID],
[tbl_Currency].[Currency] AS [Currency],
[tbl_Contract].[CurrencyRate] AS [CurrencyRate],
[tbl_Contract].[Amount] AS [Amount],
[tbl_Contract].[BasicAmount] AS [BasicAmount],
[ParentContract].[Title] AS [ParentContract],
[tbl_Contact].[Name] AS [ContactName],
[tbl_Contract].[ContactID] AS [ContactID],
[tbl_Contract].[CampaignID] AS [CampaignID],
[tbl_Campaign].[Name] AS [CampaignName],
[tbl_Contract].[IncidentID] AS [IncidentID],
[tbl_Incident].[IncidentNumber] AS [IncidentNumber],
[tbl_Contract].[CreatedOn] AS [CreatedOn],
[tbl_Contract].[CreatedByID] AS [CreatedByID],
[CreatedBy].[Name] AS [CreatedByName],
[tbl_Contract].[ModifiedOn] AS [ModifiedOn],
[tbl_Contract].[ModifiedByID] AS [ModifiedByID],
[ModifiedBy].[Name] AS [ModifiedByName],
[tbl_Contract].[DateVerify] AS [DateVerify],
[tbl_Contract].[DateSwitching] AS [DateSwitching],
[tbl_Contract].[Exchange] AS [Exchange],
COUNT(*) AS [ColPhoneNumber],
[tbl_City].[Name] AS [AccountCityName],
[tbl_AccountCustomer].[Address] AS [Address],
[AccountOwner].[Name] AS [AccountOwnerName],
[tbl_AccountCustomer].[StatusAccount] AS [StatusAccount],
[tbl_Department].[Name] AS [MamgerDepartament],
[tbl_Contract].[ContractNumberFL] AS [ContractNumberFL]
FROM
[tbl_Contract] AS [tbl_Contract]
LEFT OUTER JOIN
[tbl_Opportunity] AS [tbl_Opportunity] ON [tbl_Opportunity].[ID] = [tbl_Contract].[OpportunityID]
LEFT OUTER JOIN
[tbl_Contact] AS [Owner] ON [Owner].[ID] = [tbl_Contract].[OwnerID]
LEFT OUTER JOIN
[tbl_Account] AS [tbl_AccountCustomer] ON [tbl_AccountCustomer].[ID] = [tbl_Contract].[CustomerID]
LEFT OUTER JOIN
[tbl_Currency] AS [tbl_Currency] ON [tbl_Currency].[ID] = [tbl_Contract].[CurrencyID]
LEFT OUTER JOIN
[tbl_Contract] AS [ParentContract] ON [ParentContract].[ID] = [tbl_Contract].[ParentContractID]
LEFT OUTER JOIN
[tbl_Contact] AS [tbl_Contact] ON [tbl_Contact].[ID] = [tbl_Contract].[ContactID]
LEFT OUTER JOIN
[tbl_Campaign] AS [tbl_Campaign] ON [tbl_Campaign].[ID] = [tbl_Contract].[CampaignID]
LEFT OUTER JOIN
[tbl_Incident] AS [tbl_Incident] ON [tbl_Incident].[ID] = [tbl_Contract].[IncidentID]
LEFT OUTER JOIN
[tbl_ContractType] AS [tbl_ContractType] ON [tbl_ContractType].[ID] = [tbl_Contract].[ContractTypeID]
LEFT OUTER JOIN
[tbl_ContractStatus] AS [tbl_ContractStatus] ON [tbl_ContractStatus].[ID] = [tbl_Contract].[ContractStatusID]
LEFT OUTER JOIN
[tbl_Contact] AS [CreatedBy] ON [CreatedBy].[ID] = [tbl_Contract].[CreatedByID]
LEFT OUTER JOIN
[tbl_Contact] AS [ModifiedBy] ON [ModifiedBy].[ID] = [tbl_Contract].[ModifiedByID]
LEFT OUTER JOIN
[tbl_SAPhoneNumbers] AS [PhoneNumbers] ON [PhoneNumbers].[ContractID] = [tbl_Contract].[ID]
LEFT OUTER JOIN
[tbl_City] AS [tbl_City] ON [tbl_City].[ID] = [tbl_AccountCustomer].[CityID]
LEFT OUTER JOIN
[tbl_Contact] AS [AccountOwner] ON [AccountOwner].[ID] = [tbl_AccountCustomer].[OwnerID]
LEFT OUTER JOIN
[tbl_Department] AS [tbl_Department] ON [tbl_Department].[ID] = [AccountOwner].[DepartmentID]
LEFT OUTER JOIN
[tbl_AccountBillingInfo] AS [tbl_AccountBillingInfo] ON [tbl_AccountBillingInfo].[ID] = [tbl_Contract].[BillInfoID]
GROUP BY
[tbl_Contract].[ID],
[tbl_AccountCustomer].[Name],
[tbl_Contract].[ContractNumber],
[tbl_Contract].[ContractTypeID],
[tbl_ContractType].[Name],
[tbl_Contract].[ParentContractID],
[tbl_Contract].[OpportunityID],
[tbl_Opportunity].[Title],
[tbl_Contract].[ContractStatusID],
[tbl_ContractStatus].[Name],
[tbl_Contract].[OwnerID],
[Owner].[Name],
[tbl_Contract].[StartDate],
[tbl_Contract].[DueDate],
[tbl_Contract].[CustomerID],
[tbl_AccountCustomer].[Name],
[tbl_Contract].[BillInfoID],
[tbl_AccountBillingInfo].[BankAccountNumber],
[tbl_Contract].[BillingFrequencyID],
[tbl_Contract].[CurrencyID],
[tbl_Currency].[Currency],
[tbl_Contract].[CurrencyRate],
[tbl_Contract].[Amount],
[tbl_Contract].[BasicAmount],
[ParentContract].[Title],
[tbl_Contact].[Name],
[tbl_Contract].[ContactID],
[tbl_Contract].[CampaignID],
[tbl_Campaign].[Name],
[tbl_Contract].[IncidentID],
[tbl_Incident].[IncidentNumber],
[tbl_Contract].[CreatedOn],
[tbl_Contract].[CreatedByID],
[CreatedBy].[Name],
[tbl_Contract].[ModifiedOn],
[tbl_Contract].[ModifiedByID],
[ModifiedBy].[Name],
[tbl_Contract].[DateVerify],
[tbl_Contract].[DateSwitching],
[tbl_Contract].[Exchange],
[tbl_City].[Name],
[tbl_AccountCustomer].[Address],
[AccountOwner].[Name],
[tbl_AccountCustomer].[StatusAccount],
[tbl_Department].[Name],
[tbl_Contract].[ContractNumberFL]

В нем есть колонка количества которая считает количество номеров для переключения для каждого клиента. И если во вкладки договора в основном реестре двойным щелчком по гриду вызвать окно редактирования формы выдаеться ошибка:
[09.07.15 17.38.02.575] (E) Ошибка выполнения метода 'wnd_BaseDBEditOnPrepare'. Ошибка открытия источника данных "X15\Workspaces\Contracts\General\MainGrid\ds_Contract".
Оригинальное сообщение об ошибке: Каждое выражение GROUP BY должно содержать по меньшей мере один столбец, который не является внешней ссылкой. «Call Stack»

Как-то меня Group by в sq_Contract смущает. Вы сделали агрегатную колонку в запросе? Там наверное подзапрос нужно было сделать.

"Maxim Ivanov" написал:COUNT(*) AS [ColPhoneNumber],

а меня вот это в принципе смущает, что здесь считается? звездочка это как-то странно... по какой таблице то?

ООО "Лайнсервис"
www.ls-crm.ru

Ну так из-за этого count и появилась группировка. Это и есть та агрегатная колонка, о которой я говорил. F возвращать это поле всегда 1 будет. Ибо там GROUP BY по tbl_Contract.ID идет.

"Maxim Ivanov" написал:колонка количества которая считает количество номеров для переключения для каждого клиента

я так понимаю, в запрос добавляли "Колонку с текстом SQL"?
туда бы вместо Count(*) подзапрос поставить типа такого:

select count(*) from tbl_SAPhoneNumbers AS CountPhoneNumbers
where CountPhoneNumbers.ContractID = tbl_Contract.ID 

(если правильно понял, именно из этой таблицы берется список номеров по договору)

тогда и весь огромный набор GroupBy не нужен будет

ООО "Лайнсервис"
www.ls-crm.ru

Добрый день! Попробовал сделать подзапрос. Почему то в некоторых колонках получаються нули хотя номера в в таблице есть?

В запросе сделаны еще список не включенных фильтров я так полагаю возможно нули появляються из за этого. Проблема в том что я не знаю где используеться этот столбец? Его создал другой разработчик и у меня нет с ним связи.

Спасибо всем. Узнал что это поле просто пока не используют. Отключил его.

:-) ну в общем тоже вариант.
А про нули в некоторых записях - тут можно проверить результаты только сделав запросик в Query Analyzer по нужной табличке по нужной записи...

ООО "Лайнсервис"
www.ls-crm.ru

Александр подскажите пожалуста где он (Query Analyzer ) находиться? У меня MS 2008 Server

Тогда SQL Server Management Studio

ООО "Лайнсервис"
www.ls-crm.ru

Спасибо всем!

Показать все комментарии