我意识到这是一个老问题。也许这会帮助其他人试图解决他们的 Sybase 问题。
也就是说,在构建 .Net 应用程序时,通常您应该使用本机 .Net 对象进行数据库访问(如果可用)。Sybase 确实提供了它们,尽管它们似乎有些难以获得。如果您的组织正在使用 Sybase 数据库,则应该有人有权从 SAP/Sybase门户为您下载适当的工具。请注意,此引用的链接是“开发者”版本,可能不适合您的要求。
使用 Sybase.Data.AseClient.AseConnection 时,您的连接字符串可能如下所示:
Server=MyServer; Port=MyPort; Database=MyDatabase; User ID=MyUserID; Password=MyPassword
请注意,您可能还需要在连接字符串中显式设置字符集和代码页:
Charset=ClientDefault;CodePageType=other;clientCharset=iso_1;
有关字符集/代码页的详细信息,请参见此处。
上面的连接字符串对我有用。我必须添加字符集部分才能让它在我的开发机器之外工作。
另请注意 .Net4 对象可能存在内存泄漏问题。一个简单的 SQL 语句经常为我触发“尝试读取或写入受保护的内存”异常。一旦我切换到 .Net2 对象,该错误就消失了。见这里。
不幸的是,Sybase 驱动程序的整体质量似乎很低。我能够让 ODBC 版本在驱动程序的早期版本(我相信是 15.03)上运行,但是 .Net2 连接对象总是会在实例化时抛出似乎是 DLL 错误的东西。现在我使用的是 15.70,并且 .Net4 对象存在上述内存泄漏问题,但目前 .Net2 对象工作正常。