系统dsn工作,但dsn-less连接字符串不起作用

时间:2013-08-14 15:38:39

标签: odbc localdb

编辑1

我尝试创建和使用系统DSN。我按照下面的类似步骤导致连接尝试成功。然后我修改了我的连接字符串以引用这个新的DSN。我收到错误 指定的DSN包含驱动程序和应用程序 之间的体系结构不匹配。

要解决这个问题,我使用sysWOW64 odbcad32 exe添加了一个相同的DSN。我的代码现在成功完成。这只是突出问题。代码CAN连接到系统DSN。但是,当我为DSNless连接复制这些属性时,代码会失败。我的connectionstring有什么问题?

结束编辑1

为什么连接字符串在设置成功后失败?

these attributes seems to work fine

但在我的项目中,当我使用此连接字符串"Driver=SQL Server Native Client 11.0;DATABASE=SynchronizerTester;Trusted_Connection=Yes;SERVER=(localdb)\v11.0;"时,我得到一个System.Data.Odbc.OdbcException,命名管道无法打开连接等。

其他文章建议我应该使用数据源。此建议失败,因为“未指定server或dsn属性”。

Odbc文件DSN与我的连接字符串有什么区别?我应该在我的代码中使用Sql *系列而不是Odbc *系列吗?如果是这样,我如何根据连接字符串检测使用哪一个,以便我可以注入正确的类型?

请注意,我可能使用相同的代码来处理各种连接字符串。我原来的想法是我会使用ODBC库作为最低标准。

2 个答案:

答案 0 :(得分:5)

... OMG

我不会删除这篇文章,因为它应该存在于我的SO资料中,作为完全愚蠢的圣地......提醒你努力减少这种愚蠢。

反斜杠是一个转义字符。

变化:

SERVER=(localdb)\v11.0;

要:

SERVER=(localdb)\\v11.0;

答案 1 :(得分:0)

如果其他人发现它有用,请在此处添加:我有不同原因的相同症状。

在我的情况下,连接字符串是正确的。问题是工作站无法解析主机名的DNS。 DSN条目以某种方式设法工作。也许它缓存了一个完全合格的服务器名称或什么......?但连接字符串失败。