ITPUB??ì3
ITPUB论坛 » 移动及嵌入式数据库 » SQLanywhere 数据库文件打不开

标题: SQLanywhere 数据库文件打不开
离线 lazycat001
高级会员



精华贴数 1
个人空间 0
技术积分 8243 (149)
社区积分 0 (1064109)
注册日期 2006-8-9
论坛徽章:6
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星ITPUB新首页上线纪念徽章 
      

发表于 2007-12-24 14:03 
SQLanywhere 数据库文件打不开

使用odbc连接数据库my.db提示错误:connection   failed:specified   database   is   invalid     使用写字板打开my.log没有显示任何内容。my.db大小:60M     my.log大小:60.3M
在网上搜到“步骤命令功能
1.Dbtran   -r   -k   -y   my.log   db.sql把.log文件的内容转换成的SQL语句
2.Attrib   -r   my.db修改只读文件mydb.db的属性为可写
3.Attrib   -r   my.log修改只读文件mydb.log的属性为可写
.......
6.DB32W.EXE-dmydb.db启动数据库SQLAnywhere
........”
执行第1步就不行,提示以下信息,并且根本没有生db.sql文件。
“Usage:   dbtran   [switches]   [transaction-log-file]   [SQL-output-file]
                                            (default   output   file   is   transaction-log-file.sql)
                Switches   (use   specified   lower-case   letter,   as   shown):
                -a                         include   rollback   transactions   in   output
                -c   "keyword=value;...”。。。。。。
还有第6步的db32w.exe在sql   anywhere   7\win32文件夹里也找不到。

请大家帮帮忙!!这个数据对我太重要了!!


__________________
我不是大虾
只看该作者    顶部
离线 bailuotuo
资深会员


精华贴数 1
个人空间 380
技术积分 4237 (320)
社区积分 1 (41496)
注册日期 2006-7-25
论坛徽章:7
ITPUB新首页上线纪念徽章     
      

发表于 2007-12-24 14:04 
什么版本的?


只看该作者    顶部
离线 bailuotuo
资深会员


精华贴数 1
个人空间 380
技术积分 4237 (320)
社区积分 1 (41496)
注册日期 2006-7-25
论坛徽章:7
ITPUB新首页上线纪念徽章     
      

发表于 2007-12-24 14:04 
SQL   anywhere   7


只看该作者    顶部
离线 hulei0058
老会员



精华贴数 0
个人空间 0
技术积分 2914 (521)
社区积分 0 (1044913)
注册日期 2006-7-26
论坛徽章:2
ITPUB新首页上线纪念徽章开发板块每日发贴之星    
      

发表于 2007-12-24 14:04 
dbtran   实用程序获取事务日志中的信息,并将该信息作为一组   SQL   语句和注释置于输出文件中。可以以下列方式运行此实用程序:

针对数据库服务器         以此方式运行时,此实用程序是标准的客户端应用程序。它使用在   -c   选项之后指定的连接字符串连接到数据库服务器,并将输出保存在使用   -n   选项指定的文件中。以此方式运行需要有   DBA   权限。

以下命令翻译来自服务器   asademo9   的日志信息,并将输出保存在名为   asademo.SQL   的文件中。

dbtran   -c   "eng=asademo9;dbn=asademo;uid=DBA;pwd=SQL "   -n   asademo.sql针对事务日志文件         以此方式运行时,此实用程序直接针对事务日志文件执行操作。如果要防止用户能够运行此语句,则应防止对事务日志文件的一般访问。

dbtran   asademo.log   asademo.sql在运行   dbtran   实用程序时,它将显示事务日志中最早的日志偏移。这可以作为确定所生成的多个日志文件顺序的有效方法。

如果使用   -c,dbtran   将尝试翻译联机事务日志文件及其同一目录中的脱机事务日志文件。如果目录中包含不止一个数据库的事务日志文件,dbtran   可能会给出错误消息。若要避免此问题,请确保每个目录包含仅用于一个数据库的事务日志文件。

一个事务可以跨多个事务日志。如果事务日志文件包含跨日志的事务,则翻译单个事务日志文件(例如,dbtran   asademo.log)时,可能会丢失跨越事务。为了让   dbtran   生成完整的事务,请将   -c   或   -m   选项与目录中的事务日志文件一起使用。

有关使用跨多个日志文件的事务进行恢复的详细信息,请参见从多个事务日志中恢复。

退出代码是零(成功)或非零(失败)。

翻译日志文件实用程序选项   
@data         

使用此选项从指定的环境变量或配置文件中读入选项。如果存在具有相同名称的环境变量和配置文件,则使用环境变量。

有关配置文件的详细信息,请参见使用配置文件。

如果要保护口令或配置文件中的其它信息,您可以使用文件隐藏实用程序对配置文件的内容进行模糊处理。

有关详细信息,请参见使用   dbfhide   命令行实用程序隐藏文件内容。

包括未提交的事务   (-a)         

事务日志包含任何事务在最近一次   COMMIT   之前做出的任何更改。最近一次提交之后做出的更改不会出现在事务日志中。

如果没有使用   -a,则输出文件中只显示已提交的事务。如果使用   -a,则会输出事务日志中的任何事务,并且后跟一条   ROLLBACK   语句。

连接字符串   (-c)         

在针对数据库服务器运行实用程序时,此参数指定连接字符串。

运行   dbtran   需要有   DBA   权限。

有关连接参数的说明,请参见连接参数。

按时间顺序输出   (-d)         

按照从最早到最晚的次序输出事务。提供此功能的主要目的是在审计数据库活动时使用不应针对数据库应用此命令的输出。

指定加密密钥   (-ek)         

使用此选项,您可以直接在命令行上为高度加密的数据库指定加密密钥。如果您有一个高度加密的数据库,则必须提供加密密钥,才能使用数据库或事务日志。

对于高度加密数据库,您必须指定   -ek   或   -ep,但不要同时指定这两者。如果您没有为高度加密数据库指定正确的密钥,则该命令将失败。

如果您要针对数据库服务器运行此实用程序(使用   -c   选项),则确保使用连接参数指定密钥,而不是使用   -ek   选项指定密钥。例如,以下命令从服务器   sample   中获取有关数据库   enc.db   的事务日志信息,并将其输出保存到   log.sql   中。

dbtran   -n   log.sql   -c   eng=sample;dbf=enc.db;uid=dba;pwd=sql;dbkey=mykey提示输入加密密钥   (-ep)         

使用此选项,您可以在命令行中指定希望得到输入加密密钥的提示。该选项将导致显示一个对话框,可以在该对话框中输入加密密钥。这样,加密密钥从不以明文显示,提供了额外的安全保证。

对于高度加密数据库,您必须指定   -ek   或   -ep,但不要同时指定这两者。如果您没有为高度加密数据库指定正确的密钥,则该命令将失败。

如果您要针对数据库服务器运行此实用程序(使用   -c   选项),则确保使用连接参数指定密钥,而不是使用   -ep   选项指定密钥。例如,以下命令从服务器   sample   中获取有关数据库   enc.db   的事务日志信息,并将其输出保存到   log.sql   中。

dbtran   -n   log.sql   -c   eng=sample;dbf=enc.db;uid=dba;pwd=sql;dbkey=mykey只输出自最近检查点操作以来的事务   (-f)         

只输出自最近检查点操作以来完成的事务。

包括审计信息   (-g)         

如果启用了   AUDITING   数据库选项,则将审计信息添加到事务日志中。使用此选项,可将审计信息作为注释包括在输出文件中。

有关详细信息,请参见   AUDITING   选项   [database]。

-g   选项隐含   -a、-d   和   -t   选项。

包括偏移范围   (-ir)         

输出在两个指定偏移之间的事务日志部分。

包括来自指定源的行   (-is)         

输出对行(以下一个或多个源中的操作已修改了这些行)的操作,这些源被指定为逗号分隔的列表:

All         所有行。这是缺省设置。   

SQLRemote         只包括使用   SQL   Remote   修改的行。您也可以使用简写形式   SR。   

RepServer         只包括使用复制代理   (LTM)   和复制服务器修改的行。您也可以使用简写形式   RS。   

Local         只包括没有复制的行。   

包括指定的表   (-it)         

输出对位于逗号分隔的列表中的并且是指定的表所执行的操作。应该以   owner.table   的形式指定每个表。

输出给定日期之前最后一次检查点操作以来的事务   (-j)         

只翻译给定日期和/或时间之前的最后一次检查点操作以来的事务。用户提供的参数可以是用引号括起来的日期、时间或时间及日期。如果省略时间,则将时间假定为一天的起始时间。如果省略日期,则假定为当天。下面是可接受的日期及时间格式: "YYYY/MMM/DD   HH:NN "。

事务日志目录   (-m)         

使用此选项可指定包含事务日志的目录。此选项必须与   -n   选项联合使用。

输出文件   (-n)         

在针对数据库服务器运行   dbtran   实用程序时,请使用此选项指定保存   SQL   语句的输出文件。

将输出消息记录到文件   (-o)         

将输出消息写入指定的文件。

安静地运行   (-q)         

不显示输出消息。只有在命令提示符下运行此实用程序时才可以使用此选项。如果您指定此选项,则还必须指定   -y   选项,否则操作将失败。

不包括未提交的事务   (-r)         

删除所有未提交的事务。这是缺省行为。

替换复制服务器用户名   (-rsu)         

缺省情况下,-is   选项假定缺省的复制服务器用户名为   dbmaint   和   sa。您可以使用   -rsu   选项以及用逗号分隔的用户名列表来替换此假定。

生成   ANSI   标准   SQL   UPDATE   (-s)         

如果不使用此选项,而且在表上没有主键或唯一索引,则在有重复行的情况下,翻译日志文件实用程序生成带有非标准   FIRST   关键字的   UPDATE   语句。如果使用此选项,则忽略   FIRST   关键字,以便与   SQL   标准兼容。

生成   SQL   Remote   注释   (-sr)         

将生成的注释保存在说明   SQL   Remote   如何将操作分发到远程站点的输出文件中。

包括触发器生成的事务   (-t)         

缺省情况下,触发器执行的操作不包括在命令文件中。如果在数据库中使用匹配触发器,则在针对该数据库运行命令文件时,触发器将自动执行操作。如果运行命令文件所针对的数据库中不存在匹配触发器,则应该包括触发器操作。

只输出列出用户的事务   (-u)         

使用此选项,您可以将事务日志的输出限制为只包括指定的用户。

输出除列出用户之外的事务   (-x)         

使用此选项,您可以将事务日志的输出限制为排除指定的用户。

在不确认操作的情况下运行   (-y)         

如果选择了此选项,则自动替换现有命令文件,而不提示您进行确认。如果您指定   -q,则还必须指定   -y,否则操作将失败。

只作为注释包括触发器生成的事务   (-z)         触发器生成的事务将只作为注释包括在输出文件中。

transaction-log         要翻译的日志文件。不能与   -c   或   -m   选项一起使用。

SQL-file           包含已翻译信息的输出文件。只与   transaction-log   一起使用。


只看该作者    顶部
离线 jianghuilei
老会员



精华贴数 0
个人空间 0
技术积分 1176 (1479)
社区积分 0 (1544845)
注册日期 2007-9-8
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2007-12-24 14:05 
有两种办法可以解决这个问题。方法一是去掉DB文件与LOG文件的关联这样就可以打开DB了;方法二是重建LOG.

方法一:
1)启动Sybase   central在左边的树型目录中选择Utilities;
2)双击右边出现的条目中的change   log   file   settings,直接next;
3)点Browse选择需要去除log文件的数据库文件,选好后next;
4)这里你会看到一些数据库的信息,log文件名,文件大小等。next;
5)去掉Maintin   the   following   transaction   log   file前面的对勾(这里也可以改成新的目录),Finish;

方法二:
1)运行MS_DOS模式
2)进入Sybase   SQL   Anywhere   8\win32目录,如
        C:>   cd   C:\Program   Files\Sybase\SQL   Anywhere   8\Win32
3)运行命令(假设数据库文件在D盘根目录下):
        dblog   -t   d:\my.log   d:\my.db


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问