Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Господа, не могу разобраться, что происходит...
Есть вот такие простые запросы:
select * FROM [Link_EXCEL]...[Магистрали$]

SELECT * FROM OpenrowSet('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=E:\TariffXLS\trf_magistral.xlsx;','SELECT * FROM [Магистрали$]')


Оба они должны вернуть один и тот же набор данных и они его возвращают, но только если выполнять их в менеджмент студии. Запрос находится в хранимой процедуре, которую должно вызвать клиентское приложение и вот при вызове с клиента, запросы не выполняются.

Ошибка при выполнении первого:
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "Link_EXCEL" вернул сообщение "Уровень изолированности, а также его усиление не поддерживаются."


Ошибка при выполнении второго:
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "(null)" вернул сообщение "Уровень изолированности, а также его усиление не поддерживаются."


Что можно предпринять, чтобы избавиться от ошибки?

Параметры (sp_MSset_oledb_prop) изменял, DisallowAdhocAccess в реестр руками добавил, exec sp_addlinkedsrvlogin N'Link_EXCEL', 'False' для прилинкованного сервера сделал... что еще можно сделать?
2 мар 15, 09:18    [17330048]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
Что можно предпринять, чтобы избавиться от ошибки?

Не запускать запросы в транзакции
2 мар 15, 09:19    [17330053]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Не запускать запросы в транзакции

наверное не получится... к ядру системы у меня доступа нет, а транзакции если и запускаются явно, то в ядре...
2 мар 15, 09:34    [17330094]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
Glory
Не запускать запросы в транзакции

наверное не получится... к ядру системы у меня доступа нет, а транзакции если и запускаются явно, то в ядре...

Какому еще ядру ?
В вашей процедуре наверняка используется транзакция
2 мар 15, 09:36    [17330100]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
как еще можно вытащить данные из excel-файла?
2 мар 15, 09:36    [17330104]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Какому еще ядру ?
В вашей процедуре наверняка используется транзакция

как ее не использовать? явно я ее в процедуре не стартую...
2 мар 15, 09:37    [17330108]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
Glory
Какому еще ядру ?
В вашей процедуре наверняка используется транзакция

как ее не использовать? явно я ее в процедуре не стартую...

Вы хотите сказать, что вся ваша процедура состоит из одного единственного запроса select * FROM [Link_EXCEL]...[Магистрали$] ?
2 мар 15, 09:38    [17330112]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
Rif-sql
Glory
Какому еще ядру ?
В вашей процедуре наверняка используется транзакция

как ее не использовать? явно я ее в процедуре не стартую...
Значит, неявно стартуете.
Код покажите. И select @@version
2 мар 15, 09:43    [17330136]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Вы хотите сказать, что вся ваша процедура состоит из одного единственного запроса select * FROM [Link_EXCEL]...[Магистрали$] ?

нет... сначала она берет из блоба сам файл excel-я, записывает его на диск, а потом должна выполнить этот запрос...
2 мар 15, 09:44    [17330144]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
alexeyvg
Значит, неявно стартуете.
Код покажите. И select @@version


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROCEDURE spChangeTariffsMagistral
	@FileID uniqueidentifier,
	@ContactID uniqueidentifier,
	@InFile int = 0
AS
DECLARE @BufLen int
DECLARE @BufPos int
DECLARE @Buffer varbinary(4096)
DECLARE @Stream int
DECLARE @HR int
DECLARE @Filename varchar(max)
declare @CurrentDate datetime
BEGIN
	SELECT @BufPos = 1, @BufLen = DATALENGTH(DataFile) FROM [dbo].tbl_FileTariffs WHERE ID = @FileID
	set @Filename = 'E:\TariffXLS\trf_magistral.xlsx'
     
    EXEC @HR = sp_OACreate 'ADODB.Stream',@Stream OUT
    EXEC @HR = sp_OASetProperty @Stream,'Type',1
	EXEC @HR = sp_OASetProperty @Stream,'Mode',3
    EXEC @HR = sp_OAMethod @Stream,'Open'
     
    WHILE @BufLen > 0 BEGIN
        SELECT @Buffer = SUBSTRING(DataFile,@BufPos,4096) FROM [dbo].tbl_FileTariffs WHERE id = @FileID
        EXEC @HR = sp_OAMethod @Stream,'Write',null,@Buffer
        SELECT @BufLen = @BufLen - 4096, @BufPos = @BufPos + 4096
    END
     
    EXEC @HR = sp_OAMethod @Stream, 'SaveToFile',Null, @Filename, 2
	exec @Filename = sp_OAGetErrorInfo @HR
    EXEC @HR = sp_OAMethod @Stream, 'Close'
    EXEC @HR = sp_OADestroy @Stream
	
	select * FROM [LS_EXCEL]...[Магистрали$]


Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
Feb 10 2012 19:39:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
2 мар 15, 09:47    [17330162]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
END в конце есть, если что...
2 мар 15, 09:49    [17330167]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
в конце есть, если что...

" но только если выполнять их в менеджмент студии." - вы процедуру так запускали ?
2 мар 15, 10:06    [17330231]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory,
как так?

вот так я ее запускал:

exec spChangeTariffsMagistral '5953A69B-04EF-4F8E-AA44-7DF51E2A4686','09553613-BE5B-4969-B7E6-0E4E99966738'
2 мар 15, 10:10    [17330251]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
Glory,
как так?

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

Поэтому вопрос - вы процедуру то запускали в студии ?
2 мар 15, 10:14    [17330270]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Поэтому вопрос - вы процедуру то запускали в студии ?

ну конечно, даже радовался когда всё заработало как нужно... вообще то она не просто должна селект выполнить, она должна данные в таблицу БД записать, но всё связанное с записью, я пока удалил...
2 мар 15, 10:19    [17330298]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
Glory
Поэтому вопрос - вы процедуру то запускали в студии ?

ну конечно, даже радовался когда всё заработало как нужно... вообще то она не просто должна селект выполнить, она должна данные в таблицу БД записать, но всё связанное с записью, я пока удалил...

И так тоже запускали ?

BEGIN TRANSACTION
exec myproc ...
COMMIT TRANSACTION
2 мар 15, 10:20    [17330306]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
вообще то она не просто должна селект выполнить, она должна данные в таблицу БД записать, но всё связанное с записью, я пока удалил...

Т.е. вы запускаете не ту процедуру, что запускает ваше приложение ?
2 мар 15, 10:21    [17330308]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
И так тоже запускали ?

BEGIN TRANSACTION
exec myproc ...
COMMIT TRANSACTION

нет, так не запускал...
2 мар 15, 10:35    [17330371]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Т.е. вы запускаете не ту процедуру, что запускает ваше приложение ?

как же не ту, она одна, только ее и запускаю, и из студии, и из приложения...
2 мар 15, 10:37    [17330378]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
Rif-sql,

Напишите в начале вашей процедуры:
set transaction isolation level read committed;
2 мар 15, 10:47    [17330437]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
как же не ту, она одна, только ее и запускаю, и из студии, и из приложения..

Ага-ага " но всё связанное с записью, я пока удалил..."
2 мар 15, 10:50    [17330457]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Ага-ага " но всё связанное с записью, я пока удалил..."

ну так я же ее на сервере редактирую, как можно вызвать другую процедуру? в чем-то мы с вами друг друга недопонимаем...
2 мар 15, 11:03    [17330531]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
invm
Напишите в начале вашей процедуры:
set transaction isolation level read committed;


написал... не помогает, та же самая ошибка...
2 мар 15, 11:07    [17330543]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Glory
Member

Откуда:
Сообщений: 104751
Rif-sql
написал... не помогает, та же самая ошибка...

Это не код для исправления ошибки.
Это код для доказательства того, что ваша программа использует транзакции.
Что и так было видно по сообщению об ошибке.
2 мар 15, 11:09    [17330554]     Ответить | Цитировать Сообщить модератору
 Re: Поставщик OLE DB выдает ошибку об уровне изолированности  [new]
Rif-sql
Member

Откуда:
Сообщений: 31
Glory
Это не код для исправления ошибки.
Это код для доказательства того, что ваша программа использует транзакции.
Что и так было видно по сообщению об ошибке.

так программа, или процедура?
2 мар 15, 11:13    [17330580]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить