0

我正在尝试在 SQL Server 2017 中创建链接服务器,链接系统是 odbc (criteria criOdbc)

来自 SQL Server Management Studio 的测试 1 :

select * 
from OPENROWSET('MSDASQL',
                'DSN=criteria64;uid=xxxx;pwd=yyyy;',
                'select * from table where key < 10')

我收到这个错误

将数据类型 DBTYPE_DBDATE 转换为日期时出错

来自 SQL Server Management Studio 的测试 2 :

select * 
from OPENROWSET('MSDASQL',
                'DSN=criteria64;uid=xxxx;pwd=yyyy;',
                'select key from table where key < 10')

这完美地工作

C# 中的测试 3(从 odbc 加载,然后批量插入 SQL Server):

OdbcConnection acc = new OdbcConnection("DSN=criteria64;uid=xxxx;pwd=yyyy;")
OdbcCommand cmd = new OdbcCommand("select * from table where key<10", acc);
....

这再次完美运行

测试 4将 MS Access 中的同一张表连接为链接表:

这也很完美

结论

  • Msdasql(提供者 OLE DB Microsoft for ODBC)不适用于日期和其他一些类型的 .net
  • System.Data.Odbc(用于 ODBC 的 .NET Framework 数据提供程序)完美运行

最后一个问题

是否可以在链接服务器中为 ODBC 使用 NET Framework 数据提供程序?(找不到任何文档)

如果没有:是否有任何类型的连接器(基于 odbc)我可以尝试在链接服务器中使用作为替代msdasql

注意 使用 case 语句转换每个日期列对我来说不是解决方案。我正在寻找全局修复。

我还需要写入这个表。

在这种情况下,我更舒服的选择是使用 c#。

感谢您的时间

4

0 回答 0