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

Откуда:
Сообщений: 776
Добрый день.
Наверное наивный вопрос, но нет опыта работы с разными серверами и вообще с АS400 . Подскажите кто нибуть, please.

Есть MSSQL Server. К нему прилинкован AS400

Делаю OPENQUERY запрос в котором все работает:

SELECT * FROM OPENQUERY(S44DE055, 'SELECT * FROM rl35tb14.FMFIFC1')

Но нужно делать запрос по схеме : 4-part name: LinkedServer.Catalog.Schema.Table: SELECT * FROM S44DE055.. rl35tb14.FMFIFC1 - неправильно

Где найти недостающие компоненты?

Как сделать INSERT с MSSQL в AS400 ??
6 авг 09, 22:47    [7508378]     Ответить | Цитировать Сообщить модератору
 Re: Linked Servers : MSSQL2000 & AS400  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Какие такие компоненты?
Каталог - это база, где живет таблица в определенной схеме. Подставьте имя базы между первой и второй точкой и пробел уберите после последней.
7 авг 09, 06:23    [7508866]     Ответить | Цитировать Сообщить модератору
 Re: Linked Servers : MSSQL2000 & AS400  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_tables_ex - если конечно ваш сервер AS400 вообще поддерживает такое именование объектов
7 авг 09, 10:42    [7509457]     Ответить | Цитировать Сообщить модератору
 Re: Linked Servers : MSSQL2000 & AS400  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
пертягиваю данные с SQL Server в AS 400.
Удается INSERT-ить, SELECT-ить через OPENQUERY.
Но UPDATE, DELETE дает ошибку. И ето при том что вначале когда таблица в AS400 была почти пустой DELETE и UPDATE шло без проблем.
Теперь дает следуюшую ошибку (привожу также пример SELECT-a который пытаюсь удалить):


SELECT * FROM OPENQUERY(S44DE055, 'select * from rl35tb14.KMFIFC1 WHERE (KBNEI1 = ''VG00001'')')
(идет без проблем)

DELETE FROM OPENQUERY(S44DE055, 'select * from rl35tb14.KMFIFC1 WHERE (KBNEI1 = ''VG00001'')')
(дает ошибку :
Der OLE DB-Provider 'IBMDASQL' konnte nicht aus der select * from rl35tb14.KMFIFC1 WHERE (KBNEI1 = 'VG00001')-Tabelle löschen.
Die Aktualisierung entsprach nicht den Schemaanforderungen.
[OLE/DB provider returned message: Key column information is insufficient or incorrect. Too many rows were affected by update.]
OLE DB-Fehlertrace [OLE/DB Provider 'IBMDASQL' IRowsetChange::DeleteRows returned 0x80040e21: DBROWSTATUS_E_SCHEMAVIOLATION]. )

подскажет кто нибуть где искать загвоздку? Как в AS400 правильно удалять и как правильно искать Key column?
15 авг 09, 22:49    [7542899]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить