如果没有DSN,如何创建与MySQL链接的SQL server服务器?

如果没有DSN,如何创建与MySQL链接的SQL server服务器?,mysql,sql-server,odbc,Mysql,Sql Server,Odbc,我想创建一个链接到MySQL的服务器,但我不想引用DSN,因为设置它会带来更多的管理开销。在许多环境中,我通常可以用一个连接字符串替换DSN,该连接字符串包含通常使用DSN配置和保存的所有数据位。使用MySQL链接的服务器,我没有成功 我的上一次尝试使用了以下(净化)脚本: 此脚本运行并创建链接的服务器对象,但当我尝试运行以下查询时: SELECT * FROM OPENQUERY(MYSQL_DSNLESS, 'SELECT * FROM mysqlschemaname.table01')

我想创建一个链接到MySQL的服务器,但我不想引用DSN,因为设置它会带来更多的管理开销。在许多环境中,我通常可以用一个连接字符串替换DSN,该连接字符串包含通常使用DSN配置和保存的所有数据位。使用MySQL链接的服务器,我没有成功

我的上一次尝试使用了以下(净化)脚本:

此脚本运行并创建链接的服务器对象,但当我尝试运行以下查询时:

SELECT * FROM OPENQUERY(MYSQL_DSNLESS, 'SELECT * FROM mysqlschemaname.table01')
我得到这个错误:

OLE DB provider "MSDASQL" for linked server "MYSQL_DSNLESS" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "MYSQL_DSNLESS".

这项技术是否有效?如果有效,需要做哪些更改才能使其正常工作?

您可以在SQLServer中定义链接服务器,而无需DSN。在我的例子中,我发现处理DSN是一种浪费时间的行为(问题是这里和那里使用的字符页;我们怎么可能在21世纪出现,而供应商仍然没有解决这个问题!!??),所以只使用“提供者字符串”来代替

因此,所需的最基本信息是: -提供程序:我使用了“用于ODBC驱动程序的Microsoft OLE DB提供程序” -产品名称:“MySQL”,如果这是您想要链接到的数据库 -提供者字符串:在这里,您可以说明要使用的驱动程序、要连接的服务器和端口(如果使用默认值,则可能不需要端口,但不是100%确定)、用户名和密码(恐怕是明文,因此最好使用专用凭据)

就这些。您可以指定要连接的数据库或其他“选项”值(请查看MySQL的ODBC连接器信息)

因此,在Matthew Macfarland的例子中,它是这样的:

SELECT * FROM OPENQUERY(MYSQL_DSNLESS, 'SELECT * FROM mysqlschemaname.table01')
EXEC master.dbo.sp_addlinkedserver @服务器=@LinkedServer ,@srvproduct=N'MySQL' ,@provider=N'MSDASQL' ,@provstr=N'DRIVER={MySQL ODBC 5.3 ANSI DRIVER};SERVER=servername;端口=3306;数据库=mysqlschemaname;USER=mysqlusername;PASSWORD=mysqlpassword;选项=3'


您是否在询问是否可以创建不带数据源的数据源?否。我想创建不带DSN的链接服务器。DSN在您的情况下引用ODBC连接,因此否如果您使用ODBC数据源,则无法创建不带ODBC数据源的链接服务器。