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

Откуда:
Сообщений: 26
Добрый день всем!

Проблема:
нужно очистить MySQL-таблицу через Linked Server.

Пробую так: TRUNCATE TABLE OPENQUERY(MYSQL_DEKA, 'select * from deka_ostatki_opt') . Не получается - выдает, что ошибка возле команды OPENQUERY.

Пробую так: DELETE OPENQUERY(MYSQL_DEKA, 'select * from deka_ostatki_opt') . Не получается. Выдает следующее:

"Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL_DEKA" вернул сообщение "Row cannot be located for updating. Some values may have been changed since it was last read.".
Msg 7345, Level 16, State 1, Line 1
Поставщик OLE DB "MSDASQL" для связанного сервера "MYSQL_DEKA" не может произвести удаление из таблицы "select * from deka_ostatki_opt". В наборе строк использовался принцип оптимистичного параллелизма, и значение столбца было изменено после последней выборки или повторной синхронизации содержащей его строки."

Помогите очистить таблицу.
6 окт 08, 16:08    [6270203]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Гм... А с чего Вы взяли, что OPENQUERY и TRUNCATE овместимы?!


Ваш провайдер поддерживает Four-Part Name?

DELETE MYSQL_DEKA.<database>.<owner>.TableName
6 окт 08, 16:16    [6270255]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
bazik
Member

Откуда:
Сообщений: 26
нет, к сожалению не поддерживает
6 окт 08, 18:47    [6271119]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SELECT @@version

???
7 окт 08, 08:39    [6271996]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Таблица MySQL, и вопрос задавайте в соответствуищем топике.
7 окт 08, 09:23    [6272104]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
Glory
Member

Откуда:
Сообщений: 104760
У таблицы deka_ostatki_opt есть ПК ?
7 окт 08, 10:13    [6272342]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
bazik
Member

Откуда:
Сообщений: 26
Все ок, проблему решил. всем спасибо
8 окт 08, 13:42    [6279182]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
Glory
Member

Откуда:
Сообщений: 104760
bazik
Все ок, проблему решил. всем спасибо

И вам спасибо, за опубликование решения
8 окт 08, 13:45    [6279215]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
o-o
Guest
граждане, ткните носом, плиз, где написано, что DDL не поддерживается линкованными серверами!

ход событий:
пытаюсь сделать TRUNCATE через linked server, имея все права на базу:
truncate table [GC0050V7\SQL_2008].certtest.dbo.t

облом, пишут:
Msg 4701, Level 16, State 1, Line 1
Cannot find the object "t" because it does not exist or you do not have permissions.


поиск по форуму на "truncate linked server" привел в эту тему.
на
truncate table openquery([GC0050V7\SQL_2008], 'select * from certtest.dbo.t')


получаю то же самое, что тут писали:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'openquery'.


ок, гуглим "truncate linked server" worldwide.
вылазит форум sqlservercentral
где дается решение через sp_executesql
(да, сработало:
execute [GC0050V7\SQL_2008].certtest.dbo.sp_executesql N'TRUNCATE TABLE dbo.t'
)
и там же написано: I knew DDL was not supported by linked servers, but could not find specifically that TRUNCATE is a DDL statement
даются 2 ссылки вникуда, поиск на "sql server DDL is not supported by linked servers" не дает ничего :(

я вот "наоборот" знаю, что TRUNCATE в SQL Server это DDL.
зато не знаю про DDL, не поддерживаемый by linked servers.
кто поделится ссылочкой?
18 ноя 13, 18:31    [15150408]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
Гость333
Member

Откуда:
Сообщений: 3683
o-o
зато не знаю про DDL, не поддерживаемый by linked servers.
кто поделится ссылочкой?

Достаточно посмотреть в BOL синтаксис любой команды DDL.
Если вы найдёте там возможность указания linked_server или rowset_function — бинго — эта команда поддерживает связанные сервера.
18 ноя 13, 18:40    [15150441]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
o-o
Guest
Гость333,
ок, спасибо!
18 ноя 13, 18:54    [15150502]     Ответить | Цитировать Сообщить модератору
 Re: Проблема TRUNCATE TABLE OPENQUERY  [new]
o-o
Guest
ок, все нашлось прямым текстом:
Accessing Linked Servers

After a linked server is created by using sp_addlinkedserver, the server can be accessed by using the following:

Distributed queries that access tables in the linked server through SELECT, INSERT, UPDATE, and DELETE statements by using a linked server-based name.


Remote stored procedures executed against the linked server by using a four-part name.


An EXECUTE statement that takes an arbitrary parameterized pass-through command by using the AT linked_server_name extension. This command includes data definition language (DDL) and data manipulation language (DML) statements, or commands that return more than one result.
-------------------------------

мораль: DDL только через EXECUTE и процедуры на удаленном сервере.
ну и если linked server не сконфигурирован под RPC OUT, то DDL-ю кранты
18 ноя 13, 20:05    [15150734]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить