2012-04-27 2 views
0

Я создал связанного сервера с помощью драйвера ODBC с следующей строки ПРОВАЙДЕРВставка ошибок с использованием Linked Server MySQL

DRIVER={MySQL ODBC 5.1 Driver};SERVER=HOST;USER=uid;PASSWORD=pw;OPTION=3 

Мой связанный сервер с именем MYSQL. Если я сделать выбор и UPDATE в том, как он работает прямо

SELECT * FROM OPENQUERY(MYSQL,'SELECT * FROM DatabaseName.Table') 
UPDATE OPENQUERY(MYSQL, 'SELECT * FROM DatabaseName.Table where test=0') SET test=1 

при попытке выполнить вставку с следующим синтаксисом

INSERT OPENQUERY(MYSQL,'SELECT Column1, Column2, Column3 from DatabaseName.Table WHERE 1=0') VALUES (10,20,30) 

я эта следующей ошибкой

The OLE DB provider "MSDASQL" for linked server "MYSQL" could not INSERT INTO table "[MSDASQL]". Commands out of sync; you can't run this command now. 
+1

решаемые создания моего связанного сервера в том, как: EXEC master.dbo.sp_addlinkedserver @ сервер = 'MYSQL', @ srvproduct = 'MySQL', @ поставщика = 'MSDASQL', @ provstr = "DRIVER = {MySQL ODBC 5.1 Driver}; SERVER = HOST; Port = 3306; USER = uid; PASSWORD = pw; OPTION = 3; DATABASE = mydb; –

ответ

0

Я думаю, у вас такая же проблема, как и this thread на другом форуме. Из ответа, который, похоже, решил проблему для людей, похоже, что вы пропустили имя базы данных из строки поставщика. Попробуйте добавить DATABASE=mydb; к вашей строке поставщика.

Вот оригинальный ответ:

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

EXEC master.dbo.sp_addlinkedserver @server='MYSQL', @srvproduct='MySQL', 
@provider='MSDASQL', @provstr='DRIVER={MySQL ODBC 5.1 
Driver};SERVER=HOST;Port=3306;USER=uid;PASSWORD=pw;OPTION=3;DATABASE=mydb; 

ошибка в драйвере ODBC, кажется, затрагивает только заявление вставки и была примерно с 2008 года ... я хотел бы надеяться, что MySQL фиксированной его теперь ...

после вас создайте связанный сервер, используя процедуру, описанную выше, вставку вставки , а также все остальное!

+0

да это ... Прочитано мой комментарий –

+1

@Luigi Похоже, вы отправили свой комментарий примерно в то же время, когда я отправил свой ответ. Задав свой вопрос в будущем, если вы решите его самостоятельно, добавьте его в качестве ответа и примите его. Таким образом, другие пользователи не будут пытаться ответить на ваш вопрос, и люди с одинаковой проблемой могут найти ответ, не копаясь в ваших комментариях. – Bridge

+1

@Luigi Итак, пожалуйста, отметьте этот вопрос как разрешенный, либо отправляя ответ в качестве нового ответа, либо принимайте его, либо принимая мой ответ. – Bridge

0

Я просто испытал ту же самую проблему и удалось решить, отключив Force use of forward-only cursor и Don't cache results for forward-only cursor для моего соединения ODBC.

Я не знаю точно, если оба варианта необходимо отключить. Я получил подсказку от here

Я связал SQL Server 2012 с MySQL v5.1 через MySQL ODBC/Connector v5.1.11, 64-bit. Мой источник данных ссылок настроен на использование системы ODBC DSN, у которой уже была указана база данных MySQL (это относится к предыдущим ответам), и все же я все еще получил ошибку перед деактивацией этих параметров курсоров (по умолчанию они не включены для новых источники данных, я был тем, кто в какой-то момент включил их).

Смежные вопросы