2016-11-17 4 views
0

Я пытаюсь создать связанный сервер из офисной установки SQL Server в удаленную базу данных MySQL. Я попытался сделать это, используя мастер SQL Server, а также код T-SQL. Код, который я использую в данный момент, показан ниже:Связанный сервер от SQL Server 2014 до MySQL

EXEC master.dbo.sp_addlinkedserver @server='MYSQL', @srvproduct='MYSQL', @provider='MSDASQL', 
@datasrc='TestConnection', @provstr='DRIVER={MySQL ODBC 5.2 Unicode Driver};SERVER=111.111.111.111;Port=111;USER=user;PASSWORD=password;OPTION=3;DATABASE=TestDatabase;' 

Я заменил все конфиденциальные данные примерами испытаний.

Я создал соединение ODBC с базой данных MySQL локально с моего ПК и протестировал его, и соединение работает нормально. Я даже использую те же детали в своем MySQL Workbench, поэтому я знаю, что нет проблем с деталями подключения.

Когда я запускаю код выше это говорит о том, что соединение было создано, но когда я перейти к нему в SQL Server, я получаю ошибку:

Cannot initialize the data source object of the OLE DB provider "MSDASQL" for linked server "MYSQL", (Microsoft SQL Server, Error:7399)

Я был под впечатлением, на самом деле, как я воздвиг соединение в ODBC с правильным именем пользователя и паролем, мне действительно не нужно включать их в приведенное выше заявление, но я пытался с и без, но без успеха. Связана ли проблема с настройкой входа в SQL Server, чтобы все это произошло?

Любая помощь будет высоко оценена.

ответ

0

Я не могу точно ответить на ваш вопрос, но я опубликую свои заметки о настройке соединения и скрипт - возможно, поможет. Версия драйвера IIRC MySQL была как-то важна.

/* 
MySQL ODBC driver version 5.13 (install on SQL server) 
System DSN name: my_web (create on SQL server, configure, test connectivity) 
ODBC options: (leave default) 
MSDASQL provider options (set in SSMS): 
    Nested queries 
    Level zero 
    Allow inprocess 
    Supports Like 
*/ 

-- run next to drop linked server definition named 'my_web_linked', if required 
--exec master.dbo.sp_dropserver N'my_web_linked', 'droplogins' 

exec master.dbo.sp_addlinkedserver 
    @server = N'my_web_linked', 
    @srvproduct=N'MySQL', 
    @provider=N'MSDASQL', 
    @datasrc='my_web' 

exec master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname=N'my_web_linked', 
    @useself=N'False', 
    @locallogin=NULL, 
    @rmtuser=N'MySQL user name here', 
    @rmtpassword=N'MySQL password value here' 

-- run next to test connection - assuming you have table named test on mysql db 
--select * from my_web_linked...test 
+0

Привет, Арво, спасибо за отправку вашего образца сценария, я заменил детали, где мне нужно было на основе моей установки, но, к сожалению, я все еще не могу установить соединение. Я также пробовал следовать инструкциям, перечисленным на этом веб-сайте: - [link] (http://bradmarsh.net/index.php/2008/11/12/setting-up-linked-servers-between-mysql-and- mssql /), но в данный момент ничего не работает, любые дополнительные предложения будут оценены. – PJD

+0

Вы установили, настроили и протестировали ODBC-соединение на машине SQL-сервера? Соединение с подключенным сервером осуществляется с сервера SQL, а не с клиентского ПК. Является ли ваш SQL-сервер 32-битным или 64-битным? – Arvo

+0

Привет, Арво, спасибо за ответ, да, ODBC установлен и настроен на машине SQL Server, а SQL Server - 64-битный. Спасибо Phil – PJD

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

  • Нет связанных вопросов^_^