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

Откуда: Novosibirsk
Сообщений: 15
Доброе утро.

Недавно мне помогли с написание процедуры для проверки связи связанных сервером в MSSQL. Процедура работает без нареканий.
Но вот когда я создал задачу в Agent SQL, стали возникать странности.
Есть один сервер с Oracle, при выполнении процедуры вручную она показывает, что связь есть.
Но когда та же процедура в задаче - связи нет.
Это ошибка, которая возникает при проверке.
Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "ORA_SOTIASSO_BIYSK".

Надеюсь кто-нибудь сможет объяснить причину.
Ниже код процедуры.

ALTER PROCEDURE [dbo].[LINK_SQL_DIAGNOSTIC]
AS
DECLARE @ip sysname; --Адресс сервера
DECLARE @name nvarchar(70); --Адресс сервера
DECLARE @servers TABLE (ip varchar(25), name varchar(70)) -- таблица с адресами серверов
DECLARE @res TABLE(ip sysname, res nvarchar(400), name nvarchar(70)); -- Результирующая таблица проверки связи с серверами

--Заполнение таблицы адресами
INSERT INTO @servers
SELECT DISTINCT [techsite_cfg-2.X.X].[dbo].[SOURCE].[NAME_SQLLINK], [techsite_cfg-2.X.X].[dbo].[SOURCE].[NAME_SHR]
FROM [techsite_cfg-2.X.X].[dbo].[SOURCE] WITH(INDEX(I_UCL_NAMESHR_NAMESQLLINK),READUNCOMMITTED)
	INNER JOIN [techsite-2.X.X].[dbo].[DIAGNOSTIC]
	  ON [DIAGNOSTIC].[NAME_SHR]=[techsite_cfg-2.X.X].[dbo].[SOURCE].[NAME_SHR]

	  select * from @servers

--Объявление курсора
DECLARE cur CURSOR FAST_FORWARD FOR
SELECT ip,name
FROM @servers

OPEN cur;
FETCH NEXT FROM cur 
INTO @ip, @name;
--Построчная проверка адресов 
WHILE @@fetch_status = 0
BEGIN
	BEGIN TRY
	   EXEC sp_testlinkedserver @ip -- Проверка связи с адресом сервера
	   UPDATE [techsite-2.X.X].[dbo].[DIAGNOSTIC] SET [Link] = 1
	   WHERE [NAME_SHR]=@name
	END TRY

	BEGIN CATCH
	  UPDATE [techsite-2.X.X].[dbo].[DIAGNOSTIC] SET [Link] = ERROR_MESSAGE()
	  WHERE [NAME_SHR] = @name
	END CATCH;
	
   FETCH NEXT FROM cur INTO @ip, @name;
END
CLOSE cur;
DEALLOCATE cur;
12 окт 15, 06:43    [18265595]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка выполнения скрипта  [new]
orphen
Member

Откуда: Novosibirsk
Сообщений: 15
Проблема была в том, что в поставщике для Oracle не стояла галочка для AllInProcess.

https://support.microsoft.com/ru-ru/kb/280106

3 сообщение, там как что сделать.)
Надеюсь кому-надо поможет)
12 окт 15, 08:22    [18265672]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить