我正在尝试在 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#。
感谢您的时间