0

我必须从一些 SqlAnywhere 5 .db 文件中提取一些数据,另一个系统会定期从正在运行的 db 中提取并保存这些数据。

我已经在我的机器上安装了 sql Anywhere 16 套件。

我尝试使用此处所写的普通 ado.Net 连接到数据库:http ://www.sybase.com/detail?id=1054947

SAConnection myConnection = new SAConnection(@"UID=guest;PWD=guest;DBF=D:\test\rotomat\3991194.db"); 
//EXPECTION: Unable to start specified database: 'D:\test\rotomat\3991194.db' was created by a different version of the software
myConnection.Open();

但是我收到了您在评论中看到的错误。

因此,我尝试使用 dbunload 实用程序将数据库转换为较新的版本:dbunload - 权限问题但是我收到了您看到的关于权限的错误。谷歌搜索,您似乎需要拥有 DBA 凭据(我没有)才能提取数据库。还使用 -t 选项尝试了“只是 'pieces' 表”,但没有结果。

还尝试了其他东西(odbc,第 3 方驱动程序),没有结果。

我要问的是:有没有办法以编程方式从这些 .db 文件中提取数据?实体框架将是一个很大的优势。

谢谢

4

1 回答 1

0

不,您不能在不重新加载的情况下使用比 v10.0 更新的服务器运行这么旧的数据库,并且如果不能以具有 DBA 权限的用户身份连接该数据库,就不能进行重新加载。如果您有 SQL Anywhere 版本 5 的副本,则可以使用该副本,但除此之外,除了十六进制编辑数据库文件本身并猜测什么是数据,什么不是数据之外,没有其他方法可以获取数据。

免责声明:我在 SAP 的 SQL Anywhere 工程部门工作。

于 2014-05-29T23:37:34.787 回答