簡體   English   中英

鏈接服務器無法初始化 OLE DB 提供程序的數據源對象

[英]Linked server Cannot initialize the data source object of OLE DB provider

我正在嘗試為使用普遍數據庫的應用程序創建鏈接服務器我設置了一切正確但我不斷收到Cannot initialize the data source object of OLE DB provider "MSDASQL"我嘗試了 32 和 64 ODBC 數據源管理。 這是 SQL Server 版本信息

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) 
    Jul  9 2008 14:17:44 
    Copyright (c) 1988-2008 Microsoft Corporation
    Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

我嘗試了很多嘗試解決此問題,但測試失敗。 使用Pervasive ODBC Interface的 ODBC 連接經過測試,效果很好。

無法為鏈接服務器“serverName”初始化 OLE DB 提供程序“MSDASQL”的數據源對象。 鏈接服務器“serverName”的 OLE DB 提供程序“MSDASQL”返回消息“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”。 (.Net SqlClient 數據提供者)

如果嘗試使用studio和各種菜單創建鏈接服務器,則數據庫中的連接字符串中不會保存一個小細節! (請參閱連接字符串的最后一位)

試試這個:對我有用

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 驅動程序: ODBC 驅動程序鏈接並安裝了它。

在 SQL Management Studio 之后,我插入了以下代碼:

“我將驅動程序的描述更改為:“MySQL:8.0”並將 RPC 設置為允許遠程過程調用(如果很重要)”。

EXEC master.dbo.sp_addlinkedserver 
        @server = N'LKD_MYSQL', 
        @srvproduct=N'MySQL', 
        @provider=N'MSDASQL', 
        @provstr=N'Driver={MySQL ODBC 8.0 ANSI Driver};DATABASE=database;OPTION=3;PASSWORD=****;USER=user;SERVER=host'

GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'LKD_MYSQL', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LKD_MYSQL', @locallogin = NULL , @useself = N'False'
GO
 

選擇樣本:

select * from openquery(LKD_MYSQL,'select * from database.table')

我們也遇到了同樣的問題,並通過更改mysql登錄密碼來解決; 在密碼末尾,希望這能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM