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

Откуда: Украина, Киев-Одесса
Сообщений: 182
На сервере создана база данных sql, а также прилинкована база данных access
после некоторых запросов, выполняемых в бд sql, запрос ниже к access бд выполняется с ошибкой (хотя с другими запросами к access проблем нет)

Сообщение 7399, уровень 16, состояние 1, строка 19
Поставщик OLE DB "Microsoft.ACE.OLEDB.15.0" для связанного сервера "Access_BD" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
Сообщение 7320, уровень 16, состояние 2, строка 19
Не удалось выполнить запрос "SELECT `Tbl1035`.`Код` AS `Col1258`,`Tbl1035`.`id_ЦП` AS `Col1259` FROM `Платежи_Розница` `Tbl1035` WHERE `Tbl1035`.`Дата`= ? " при помощи поставщика OLE DB "Microsoft.ACE.OLEDB.15.0" для связанного сервера "Access_BD".

установлены х86 инстанс sql и access 2013 (бд 2007)
+
-- Запрос списка для обзвона напоминаний должникам во Вторник

use msdb
SET QUOTED_IDENTIFIER ON
declare @date1 date = GETDATE()-1 
declare @date2 date = GETDATE()-4 
declare @lb1 int = '1'  -- АС
declare @lb2 int = '2'  -- Розн
declare @lb3 int = '3'  -- СМЕ
declare @lb4 int = '4'  -- Корп
declare @lb5 int = '5'  -- Dir
declare @tema_a nvarchar (300)
set @tema_a = N' Нет данных за'+' '+convert(nvarchar(12),@date1, 104)+' г.'
declare @tema_k nvarchar (300)
set @tema_k = N' Нет данных за'+' '+convert(nvarchar(12),@date2, 104)+' г.'
declare @tema_i nvarchar (300)
set @tema_i = N' Нет данных за'+' '+convert(nvarchar(12),@date1, 104)+' г.'
declare @t table (ФИО Nvarchar(100),email Nvarchar(100), phone Nvarchar(100),ЦП Nvarchar(100), дата Nvarchar(100))
insert into @t (ФИО,email,phone,ЦП,дата)

select s.[ФИО],s.[email],s.[Телефон],c.[ЦП],дата = @tema_a from  [Access_BD]...[Платежи_АС] p
right join [Access_BD]...[ЦП]  c on p.[id_ЦП]=c.[Код]   and p.[Дата]=@date1
inner join [Access_BD]...[Сотрудники] s on c.[id_Сотрудник]=s.[Код] and c.[id_ЛБ] in ( @lb1)
where  p.[Код] is null and (c.[Код] not in (SELECT [ЦП] FROM [Access_BD]...[ЦП_вне_запроса_должники])) and (@date1 not in (SELECT [Дата] FROM [Reports].[dbo].[Праздники]))
union all
select s.[ФИО],s.[email],s.[Телефон],c.[ЦП],дата = @tema_k from  [Access_BD]...[Платежи_Корп] p
right join [Access_BD]...[ЦП]  c on p.[id_ЦП]=c.[Код]   and p.[Дата]=@date2
inner join [Access_BD]...[Сотрудники] s on c.[id_Сотрудник]=s.[Код] and c.[id_ЛБ] in (@lb4,@lb5)
where  p.[Код] is null and (c.[Код] not in (SELECT [ЦП] FROM [Access_BD]...[ЦП_вне_запроса_должники]))and (@date2 not in (SELECT [Дата] FROM [Reports].[dbo].[Праздники]))
union all
select t1.[ФИО],t1.[email], t1.[Телефон],t1.[ЦП],дата = @tema_i from (
	select s.[ФИО],s.[email],s.[Телефон], c.[ЦП], s.[Код] from  [Access_BD]...[Платежи_Розн] p
		right join [Access_BD]...[ЦП]  c on p.[id_ЦП]=c.[Код]   and p.[Дата]=@date1
		inner join [Access_BD]...[Сотрудники] s on c.[id_Сотрудник]=s.[Код] and c.[id_ЛБ] in ( @lb2)
	where  p.[Код] is null and (c.[Код] not in (SELECT [ЦП] FROM [Access_BD]...[ЦП_вне_запроса_должники]))and (@date1 not in (SELECT [Дата] FROM [Reports].[dbo].[Праздники]))) as t1
full join
	(select s.[ФИО],s.[email],s.[Телефон] ,c.[ЦП],s.[Код]  from  [Access_BD]...[Платежи_SME] p
		right join [Access_BD]...[ЦП]  c on p.[id_ЦП]=c.[Код]   and p.[Дата]=@date1
		inner join [Access_BD]...[Сотрудники] s on c.[id_Сотрудник]=s.[Код] and c.[id_ЛБ] in ( @lb3)
	where  p.[Код] is null and (c.[Код] not in (SELECT [ЦП] FROM [Access_BD]...[ЦП_вне_запроса_должники]))and (@date1 not in (SELECT [Дата] FROM [Reports].[dbo].[Праздники]))) as t2
	on t1.[Код]=t2.[Код]
	where (t1.[email] is not null and t2.[email] is not null);

--select * from @t
--select email+' - '+phone+' - '+дата from @t

declare @query1 nvarchar(max)
  select @query1 = 
       N'<table>' +
	   N'<caption><center><b>Должники</b></center></caption>' +
	   N'<tr><th>ФИО</th><th>Email</th><th>Телефон</th><th>ЦП</th><th>Дата</th></tr>'+
	   cast( (select  
	   	       td = ФИО, '',
	           td = email, '',
			   td = phone, '',  
			   td = ЦП, '', 
			   td = дата, ''
		    from @t
			for xml path ('tr'), type) as nvarchar (max)) +
		N'</table>'
--select @query1

exec sp_send_dbmail
@recipients =  'a@a.a',
@body_format = 'HTML',
@subject = N'Список должников для обзвона',
@body = @query1;


После перезагрузки проблема исчезает. Замечал, что ошибка появляется после запросов к бд sql, по типу
DECLARE @as TABLE (mask1 NVARCHAR(100), name NVARCHAR(100));
INSERT @as (mask1, name) VALUES 

 ('Прага','Прага Авто')
 ;
     SELECT  b.name as 'Автосалон',month( t.[DatePosting]) as 'Месяц',  sum(t.[76]) as 'Платежи'
        FROM [DATA].[dbo].[76]  t
          right JOIN @as b ON  t.channel1 LIKE b.mask1  OR t.Channel2 LIKE b.mask1 
       WHERE  t.[DatePosting] between '20140401' and '20140630' 
    GROUP BY  b.name, month( t.[DatePosting])

 


В чем может быть проблема?
5 июл 14, 16:39    [16263619]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса на прилинкованой Acess БД  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Заметил, что Сообщение 7320 указывает на ошибку в разных таблицах запроса, если повторно запустить его выполнение. Наверное ошибка не в самом запросе, а настройках Сиквела или линкованого сервера (access)..
7 июл 14, 12:30    [16268965]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении запроса на прилинкованой Acess БД  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Нашел решение проблемы
пост
7 июл 14, 16:57    [16270817]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить