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

Откуда:
Сообщений: 1189
Всем привет,понимаю что тему уже раз 50 обсуждали но блин приходтся вновь засорять форум(((
пеерчитал большинство топиков касающиеся схожей проблеммы,все равно ничего не получаеться,от отчаинья уже ничего не понимаю (((
Есть сервер Sybase
Adaptive Server Enterprise/12.5.1/EBF 11665 ESD#2/P/NT (IX86)/OS 4.0/ase1251/1838/32-bit/OPT/Fri Feb 20 04:11:31 2004
Его я прилинковываю к серверу Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
для связи использую ODBC источник.
Dias -прилинкованный сервер,на вкладке безобасность поставил имя и пароль администратора

С select никаких проблем не возникает а вот с процедурами хранимыми и с изменением таблиц проблема

если использую select * from openquery(Dias,' insert into filial.dbo.pResource values(553,10000111277) ')
то ошибка
Server: Msg 7357, Level 16, State 2, Line 25
Could not process object ' insert into filial.dbo.pResource values(553, 10000111277) '. The OLE DB provider 'MSDASQL' indicates that the object has no columns.

если insert Dias.filial.dbo.pResource values(553, 10000111277,0) то все висит пока не снимешь задачу.

при вызове процедуры если так
select * from openquery(Dias,' set fmtonly off set nocount on Execute filial.dbo.AccList_Rest "20090618",1 ') то ошибка
Server: Msg 7357, Level 16, State 2, Line 17
Could not process object ' set fmtonly off set nocount on Execute filial.dbo.AccList_Rest "20090618",1 '. The OLE DB provider 'MSDASQL' indicates that the object has no columns.

а если execute Dias.filial.dbo.AccList_Rest "20090618",1
то получаю
Server: Msg 7212, Level 17, State 1, Line 22
Could not execute procedure 'AccList_Rest' on remote server 'Dias'.
ODBC: Msg 0, Level 19, State 1
SqlDumpExceptionHandler: Process 64 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.

подскажите пожалуйста!!!
заранее спасибо
23 июн 09, 09:30    [7331403]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
Fish_Andrey,
на кой черт я написал что через openquery процедуру вызываю,это я неправильно делал,она данных не возвращает ,здесь все ясно почему ошибка))(та процедура которую вызывал AccList_Rest не возвращает ничего)
как можно добавить данные и вызвать процедуру которая ничего не возвращает?
Установка перед вызовом процедуры флагов set fmtonly off set nocount on почему то не помогает((
23 июн 09, 18:17    [7334747]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
Неужели никто не подскажет?(((((
24 июн 09, 12:47    [7337069]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Glory
Member

Откуда:
Сообщений: 104760
Fish_Andrey
Его я прилинковываю к серверу Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

Может все же стоит для начала установить на версию 9тилетней давности последний сервиспаки и патчи ?
24 июн 09, 22:17    [7340419]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
Glory,спасибо что ответили

Попробую,но вначале я на своей машине развернул сервер Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.1 (Build 2600: Service Pack 2) ,рабочий пока в покое оставлю.
Решил пойти другим путем:на Sybase мне разрешили создать процедуру(все добавления и вызовы других процедур буду делать в ней)
CREATE PROCEDURE dbo.Ach_1 --@Date char(8),@DealID numeric(10)
AS
BEGIN
--Чистка таблицы для хранения индефикаторов счетов
Delete dbo.pResource where Spid=@@Spid
--Чиста резальтутирующей таблицы
Delete dbo.pResList where Spid=@@Spid
вызов нужных процедур
--Выводим результат
Select ResourceId,TurnDeb,TurnCre,Rest From dbo.pResList where Spid=@@Spid
END

вызов процедуру с параметрами
select * from openquery(Dias,' Exec filial.dbo.Ach_1 "20090618б"10006512133')

вываливает ошибку
Сообщение 7357, уровень 16, состояние 2, строка 1
Cannot process the object " Exec dbo.Ach_1 "20090618",10006512133 ". The OLE DB provider "MSDASQL" for linked server "Diasoft" indicates that either the object has no columns or the current user does not have permissions on that object.

а без параметров все проходит

где моя ошибка? процедура ведь возвращает селект,что может быть с параметром?
25 июн 09, 05:16    [7340808]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
прошу прощения,вызов на само деле происходил вот так
select * from openquery(Diasoft,' Exec dbo.Ach_1 "20090618",10006512133')
25 июн 09, 05:22    [7340811]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Курить голый релиз сервера, как минимум, не модно. А сервисные пакеты исправлений выпускаются именно с целью устранения обнаруженых ошибок!
Не находите?..

Сообщение было отредактировано: 25 июн 09, 06:29
25 июн 09, 06:28    [7340826]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,
нахожу,но думаеться не в пакете обновлений дело,неужели создатели продукта mssql на начальном этапе начальном этапе создания продукта не смогли отработать все грубые ошибки,ситуация то ведь не специфичная а самая простая,если на начальном этапе прилинкованный сервер не может работать без установки заплаток то зачем заявлять о такой возможности,вопросы ведь мои от элементарного незнания.Насколько я понимаю mssql переадресует запрос провайдеру ODBC а то в свою очередь серверу Sybase и запрос выполняет именно Sybase так что обоим все равно что там стоит друг у друга,лишь бы оба понимали провайдера ODBC,конечно ошибки есть у любого продукта и сервис паки ставить необходимо но ведь здесь самая простая конструкция.
Интересно что такая конструкция EXECUTE('Exec filial.dbo.Ach_1 ''20090618'',10006512133') At Diasoft отрабатывает нормально но в 2000 насколько я понимаю команды at нет
25 июн 09, 07:15    [7340843]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Fish_Andrey, вот вы зачем упираетесь? Думаете это ускорит решение вашей проблеммы?
Думаете, почему в ваш топик мало народу заглядывает? В том числе и потому, что люди не хотят речь вести при наличии непропатченного сервера! Тем более, на дворе давным давно сп4 и куча последующих коммулятивных фиксов...
25 июн 09, 07:43    [7340858]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
http://sqlserverbuilds.blogspot.com/
25 июн 09, 07:45    [7340859]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,спасибо большое за ответ
да я же не упираюсь,просто порасуждал
сейчас обновлю
25 июн 09, 08:22    [7340904]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,
обновил,теперь у меня версия
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

в результате этого изменилось немного сообщение об ощибке

на команду select * from openquery(Dias,' Exec filial.dbo.Ach_1 "20090618",10006512133')
мне возвращает

Server: Msg 7357, Level 16, State 2, Line 19
Could not process object ' Exec filial.dbo.Ach_1 "20090618",10006512133'. The OLE DB provider 'MSDASQL' indicates that the object has no columns.
OLE DB error trace [Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='MSDASQL', Query= Exec filial.dbo.Ach_1 "20090618",10006512133']
конечно более информативно но все равно ничего не понимаю почему если я параметры не передаю и убираю их в процедуре подобный код отрабатывает

команда
команда exec Dias.filial.dbo.Ach_1 '20090618',10006512133
вываливает
Server: Msg 7212, Level 17, State 1, Line 20
Could not execute procedure 'Ach_1' on remote server 'Dias'.Connection Broken

команда
exec Dias.filial.dbo.Ach_1
после продолжительного раздумья возвращает

Server: Msg 11, Level 16, State 1, Line 0
[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]Общая ошибка сети. Обратитесь к документации по сети.
Server: Msg 10060, Level 16, State 1, Line 0
[Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen (PreLoginHandshake()).
Connection Broken

после этого сервер просто зависает так что приходиться перезапускать его
чего мне делать теперь?мигрировать на 2005?(((
25 июн 09, 09:58    [7341136]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,еще смущает фраза
В SQL Server 2000 и более поздних версиях функция OPENQUERY не может быть использована для выполнения расширенных хранимых процедур на связанном сервере. Однако расширенную хранимую процедуру можно выполнить на связанном сервере с помощью четырехсоставного имени.
(http://msdn.microsoft.com/ru-ru/library/ms188427.aspx)
блин ,как же это так?тогда почему без параметров вызываю((((
25 июн 09, 10:02    [7341154]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
У вас эта процедура что делает?
25 июн 09, 10:24    [7341283]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,
вот код
CREATE PROCEDURE dbo.Ach_1 --@Date char(8),@DealID numeric(10)
AS
BEGIN
--Чистка таблицы для хранения индефикаторов счетов
Delete dbo.pResource where Spid=@@Spid
--Чиста резальтутирующей таблицы
Delete dbo.pResList where Spid=@@Spid
вызов нужных процедур для расчета остатка
--Выводим результат
Select ResourceId,TurnDeb,TurnCre,Rest From dbo.pResList where Spid=@@Spid
END

если в общем она ищет остаток по счету,у нас в головном стоит Sybase на нем крутиться Diasoft,в нашем отделении есть отдельный модуль,к диасофту отношения не имеет но данные из базы о клиенте необходимы,поэтому что бы девочкам не приходилось из диасофта заливать в промежуточный файл из которого уже информацию заливать в наше приложение решили напрямую обращаться к диасофту,прилинковал сервер и все,дальше не двигаеться,селект то могу получить а вот процедуру вызвать что остаток считает нет.Вообще в диасофте то процедура для поиска остатка немного не такая,она заливает данные во временную таблицу,поэтому я написал скажем так процедуру оболочку которая находиться на сервере Sybase(одну разрешили завести) которая готовит временные таблицы,вызывает нормальную диасофта процедуру для подсчета остатка и возвращает результат из временной таблицы
25 июн 09, 10:54    [7341456]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А спробуйте в начале процедуры после AS поставить SET NOCOUNT ON.
25 июн 09, 10:59    [7341490]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,ага,пробовал и параметр SET FMTONLY OFF тоже пробовал,эти параметры я ставил внутри процедуры,в самом начале и перед ее созданием тоже вроде
SET FMTONLY OFF
go
SET NOCOUNT ON
go
Create procedure моя процедура
думаеться мне дело все же в параметрах,ведь без них процедура вызывается и отрабатывает,может в openquery как по особому можно,какой нибудь недокументированной возможностью((
сейчас еще покапаюсь пока голова еще не разболелась и если не получиться наверное придеться все таки на 2005 переходить пока все еще в самом начале((((там хоть команда
EXECUTE('Exec filial.dbo.Ach_1 ''20090618'',10006512133') At Dias отрабатывает нормально
спасибо вам за ответы ,за то что уделили время
25 июн 09, 11:16    [7341646]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Fish_Andrey
tpg,ага,пробовал и параметр SET FMTONLY OFF тоже пробовал,эти параметры я ставил внутри процедуры,в самом начале и перед ее созданием тоже вроде
SET FMTONLY OFF
go
SET NOCOUNT ON
go
Нет! Я имел в виду так:
CREATE PROCEDURE dbo.Ach_1 --@Date char(8),@DealID numeric(10)
AS
SET NOCOUNT ON
BEGIN
...
25 июн 09, 11:20    [7341668]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,
перед телом? ))
сейчас попробую
25 июн 09, 11:33    [7341757]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
tpg,
увы((( тоже самое сообщение((
Server: Msg 7357, Level 16, State 2, Line 19
Could not process object ' Exec filial.dbo.Ach_1 "20090618",10006512133'. The OLE DB provider 'MSDASQL' indicates that the object has no columns.
OLE DB error trace [Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='MSDASQL', Query= Exec filial.dbo.Ach_1 "20090618",10006512133'].
а если бы убрал параметры и в процедуре и в вызове то отработало бы,думаю дело все же в передаче параметров
25 июн 09, 11:41    [7341834]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
?
select * from openquery(Dias,' Exec filial.dbo.Ach_1 @param1 = "20090618", @param2 = 10006512133')
-------------------------------------
Jedem Das Seine
25 июн 09, 12:26    [7342160]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Fish_Andrey
Member

Откуда:
Сообщений: 1189
Maxx,
спасибо за ответ
тоже сообщение об ошибке 7357,плюнул я на это дело ,поставил пока рядом 2005,начну с него((
25 июн 09, 12:44    [7342293]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а как варинат провайдера поменять для прилинкованого сиквела ????
-------------------------------------
Jedem Das Seine
25 июн 09, 12:46    [7342308]     Ответить | Цитировать Сообщить модератору
 Re: и вновь linkved server((((  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Maxx
а как варинат провайдера поменять для прилинкованого сиквела ????
-------------------------------------
Jedem Das Seine
+1
Да, кстати, в основном к этому и сводится... https://www.sql.ru/forum/actualtopics.aspx?search=7357&bid=1
25 июн 09, 13:13    [7342522]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить