sybase 系统表集合
systypes 一行纪录了每一个由系统提供的和用户定义的数据类型 |
SYBASE 使用技巧集锦 FAQ(一)
2006-07-29 11:24
Q.如何解决数据库被标记为"suspect"的问题之一( 一般解决方案)?
A.现象:Error 926 Severity Level 14 Error Message Text Database 'xx' cannot be opened - it has been marked SUSPECT by recover Explanation
(1) 当你使用Transact_SQL命令操作这个数据库的数据时, 出现这个信息, 这是一个严重的错误, 如果 你要使用这个数据库的数据, 必须改正这个错误.
(2) 启动Backup Server, 后备master数据库
1>dump database master to "/usr/sybase/master_dump.19991201" 2>go
(3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)
1>sp_configure "allow updates", 1 2>go 1>begin tran 2>go 1>update master..sysdatabases 2>set status = -32768 3>Where name="pubs2" 4>go
如果得到(1 row affected),则
1>commit 2>go
否则
1>rollback 2>go
(4.1)如果条件允许,bcp out用户数据或dump用户数据库
(5.1)这时重新启动SQL Server, 再有sa帐号注册到SQL Server.
1>begin tran 2>go 1>update master..sysdatabases 2>set status=0 3>Where name="pubs2" 4>go
如果得到(1 row affected),则
1>commit 2>go
否则
1>rollback 2>go
1>sp_configure "allow updates" ,0 2>go
(4) 如果你的数据库原来有dboption(例如"select into","trunc log on chkpt"等), 你需要重新设置 这些option..
(5) 运行dbcc命令检查数据库的一致性
isql -Usa -P -i dbcc.sql -o dbcc.out dbcc.sql文件示例: dbcc checkdb("pubs2") go dbcc checkalloc("pubs2") go dbcc checkcatalog("pubs2") go grep Msg dbcc.out
6) 后备用户数据库
1>dump database pubs2 on "/usr/sybase/pubs2_dump.19991201" 2>go
Q.如何解决数据库被标记为"suspect"的问题之二( 数据库设备损坏时的解决方案 )?
A.现象: 926错误产生的原因有几种。本文讨论当数据库设备初始化失败( 设备文件丢失或文件读写权限 不正确 )时,导致数据库恢复失败,出现926错误的情况。
(1) 请先恢复数据库设备及读写权限。
(2) 启动Backup Server, 后备master数据库
1>dump database master to "/usr/sybase/master_dump.19991201" 2>go
3) 用isql登录到SQL Server, 须用sa帐号 (本文以pubs2数据库为例)
1>sp_configure "allow updates", 1 2>go 1>begin tran 2>go 1>update master..sysdatabases 2>set status = status - 256 3>Where name="pubs2" 4>go
如果得到(1 row affected),则
1>commit 2>go
否则
1>rollback 2>go
(4) 重新启动SQL Server, 运行dbcc命令检查数据库的一致性编辑生成dbcc.sql文件:
dbcc checkdb("pubs2") go dbcc checkalloc("pubs2") go dbcc checkcatalog("pubs2") go isql -Usa -P -i dbcc.sql -o dbcc.out grep Msg dbcc.out
(5) 后备用户数据库
1>dump database pubs2 on "/usr/sybase/pubs2_dump.19991201" 2>go
Q.如何解决ASE11.5装载或备份数据库报3230的错误?
A.用sp_dropdevice或sybase central删除逻辑设备后,不重启服务器,不回收虚拟设备号,重用它建立 设备,新建数据库。这时dump&load数据库会出3230错误。这是ASE11.5的BUG,过去不重新启动服务器, 老的虚拟设备号不能使用,现在服务器不提示错误。但dump&load数据库会出现3230错误。
解决办法是重启服务器,3230错便会消失。
Q.如何删除坏的用户数据库?(以pubs2为例)
A.当使用drop database无法删除数据库时,使用本文所示方法可以删除。
(1)使用isql以sa注册SQL server
(2)设置允许修改系统表
1>sp_configure "allow updates",1 2>go
(3)把 要删除的用户数据库置为"suspect"状态
1>use master 2>go 1>begin tran 2>go 1>update sysdatabases set status=256 2>where name="pubs2" 3>go
如果得到(1 row affected),则
1>commit 2>go
否则
1>rollback 2>go
(4)重启server,并用isql以sa注册。
(5)删除数据库
1>dbcc dbrepair(pubs2,dropdb) 2>go
(6)恢复允许修改系统表
1>sp_configure "allow updates",0 2>go
(7)结束
Q.如何修改IP地址改变后的interfaces文件?
A.安装SYBASE Adapive Server的机器IP地址改变后, 应修改 interfaces 文件及有关的设置。
如果 interfaces 文件中使用的是机器名而不是 IP 地址, 则不需要变动。 但如果客户端联结服务器使 用的是服务器的 IP 地址而不是机器名,那么客户端需修改联结服务器的 IP 地址.。
如果 interfaces 文件中使用的是 IP 地址, 那么需要修改 interfaces 文件中和地址有关的部分, 可使用dscp 或 dsedit 进行修改。 如果客户端联结服务器使用的是服务器的地址而不是机器名,那么客 户端也需修改。
Q.如何检查数据库中数据的一致性?
A.数据库一致性检查(dbcc)提供了一些命令用于检查数据库的逻辑和物理一致性。Dbcc主要有两个功能:
使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链及数据指针。 使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc 检查页分配。 在下列情况中需要使用 dbcc 命令:
作为数据库日常维护工作的一部分, 数据库内部结构的完整性决定于sa 或dbo 定期地运行 dbcc 检查。 在系统报错以后, 确定数据库是否有损坏。 在备份数据库之前, 确保备份的完整性。 如果怀疑数据库有损坏时, 例如, 使用某个表时报出表损坏的信息, 可以使用 dbcc 确定数据库中其他 表是否也有损坏。 下面是dbcc的简单用法:
dbcc checktable (table_name) 检查指定的表, 检查索引和数据页是否正确链接, 索引是否正确排序, 所有指针是否一致, 每页的数据 信息是否合理, 页偏移是否合理。 dbcc checkdb (database_name) 对指定数据库的所有表做和checktable 一样的检查。 dbcc checkalloc (database_name,fix|nofix) 检查指定数据库, 是否所有页面被正确分配, 是否被分配的页面没被使用。当使用"fix"选项时, 在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。) dbcc tablealloc (table_name,fix|nofix) 检查指定的表, 是否所有页面被正确分配, 是否被分配的页面没被使用。是 checkalloc 的缩小版本, 对指定的表做完整性检查。当使用"fix"选项时,在检查数据表的同时会自动修复数据表中有问题的页 面。 关于上述命令的其它选项及详细使用方法和checkstorage, checkverify, indexalloc 的详细使用方 法, 请参阅有关命令手册。
举例1: Unix平台检查pubs2数据库的一致性
单用户模式启动Server: $SYBASE/install startserver -f RUN_server_name -m vi dbcc_db.sql use master go sp_dboption pubs2,"single user",true go use pubs2 go checkpoint go dbcc checkdb(pubs2) go dbcc checkalloc(pubs2,fix) go dbcc checkcatalog(pubs2) go use master go sp_dboption pubs2,"single user",false go use pubs2 go checkpoint go quit go isql -Usa -Pxxxxxx -SSYBASE dbcc_db.out grep Msg dbcc_db.out 举例2: Unix平台检查pubs2数据库中titles表的一致性
vi dbcc_table.sql use pubs2 go dbcc checktable(titles) go dbcc tablealloc(titles) go isql -Usa -Pxxxxxx -SSYBASE dbcc_table.out grep Msg dbcc_table.out
Q.如何在Windows NT上手动卸载Sybase Server ?
A.关闭 Adaptive Server. 将Adaptive Server在Windows NT Services中由自动改为手动 重新启动 Windows NT server 运行sybedt32修改注册表, 删除以下内容: \\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\ \\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\_BS \\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\_HS \\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\_MS 到注册表的如下结构下: \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 删除DSLISTEN, DSQUERY, SYBASE, 并修改 LIB, INCLUDE, PATH删除SYBASE有关目录 删除如下注册键值: \\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services SYBSQL_ SYBXPS__XP SYBBCK__BS SYBMON__MS SYBHIS__HS 重新启动 Windows NT server 使用 Start | Control Panel | Settings | Services 确认SYBASE已经卸载 删除SYBASE Server所用数据库设备文件及SYBASE系统文件
|
SYBASE 使用技巧集锦 FAQ(二)
2008-01-06 11:30
SYBASE 使用技巧集锦 FAQ(二)
|
SYBASE 使用技巧集锦 FAQ(三)
2008-01-06 11:31
SYBASE 使用技巧集锦 FAQ(三) 2006-07-29 11:26
|
Sybase isql 语法
isql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件. 语法 isql [-?] | [-L] | [ { {-U login_id [-P password]} | -E } [-S server_name] [-H wksta_name] [-d db_name] [-l time_out] [-t time_out] [-h headers] [-s col_separator] [-w column_width] [-a packet_size] [-e] [-x max_text_size] [-c cmd_end] [-q "query"] [-Q "query"] [-n] [-m error_level] [-r {0 | 1}] [-i input_file] [-o output_file] [-p] [-b] [-O] ] 参数-? 显示 isql 开关的语法摘要。 -L 列出在本地配置的服务器和在网络上广播的服务器的名称。 -U login_id 用户登录 ID。登录 ID 区分大小写。 -P password 是用户指定的密码。如果未使用 -P 选项,isql 将提示输入密码。如果在命令提示的末尾使用 -P 选项而不带密码,isql 使用默认密码 (NULL)。密码区分大小写。 ISQLPASSWORD 环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。 如果没有为 -P 选项指定密码,isql 首先检查 ISQLPASSWORD 变量。如果未设置值,isql 使用默认密码 (NULL)。以下示例在命令提示处设置 ISQLPASSWORD 变量,然后访问 isql 实用工具: C:\>SET ISQLPASSWORD=abracadabra C:\>isql -E 使用信任连接而不请求密码。 -S server_name 指定要连接到的 SQL Server 默认实例。isql 不支持连接到 SQL Server 2000 命名实例。如果未指定服务器,isql 将连接到本地计算机上的 SQL Server 默认实例。如果要在网络上从远程计算机执行 isql,则需要此选项。 -H wksta_name 是工作站名称。工作站名称存储在 sysprocesses.hostname 中并由 sp_who 显示。如果未指定,则采用当前计算机名称。 -d db_name 启动 isql 时发出一个 USE db_name 语句。 -l time_out 指定 isql 登录超时之前的秒数。如果未指定 time_out 值,则命令无限期地运行。登录到 isql 的默认超时为 8 秒。 -t time_out 指定命令超时之前的秒数。如果未指定 time_out 值,则命令会无限期地运行;登录到 isql 的默认超时为 8 秒。 -h headers 指定要在列标题之间打印的行数。默认为每一查询结果集打印一次标题。使用 –1 指定不打印标题。如果使用 –1,则在参数和设置之间不能有空格(可以是 -h-1,不能是 -h –1)。 -s col_separator 指定列分隔符字符,其默认为空格。若要使用对操作系统有特殊含义的字符(例如 | ; & < >),请将该字符用双引号 (") 引起来。 -w column_width 允许用户设置屏幕输出的宽度。默认为 80 个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。 -a packet_size 使您得以请求不同大小的数据包。packet_size 的有效值介于 512 和 65535 之间。Microsoft Windows NT® 版中的 isql 默认值为 8192;另外,Microsoft MS-DOS® 版中的 isql 默认值为 512,但在该版本中也可以请求更大的数据包。数据包大小的增加可以提高较大脚本执行的 性能,在这种执行中 GO 命令之间 SQL 语句的数量很重要。Microsoft 的测试表明 8192 是大容量复制操作典型的最快设置。可以请求更大的数据包大小,但是如果请求不能得到批准,则 isql 默认为 512。 -e 回显输入。 -x max_text_size 指定返回文本数据的最大长度,以字节为单位。长于 max_text_size 的文本值将被截断。如果未指定 max_text_size,则文本数据在 4096 字节处截断。 -c cmd_end 指定命令终止符。默认情况下,通过单独在一行中输入 GO 来终止命令并将其发送到 SQL Server 2000。在重置命令终止符时,不要使用对操作系统有特殊含义的 Transact-SQL 保留字或字符,无论其前面是否有反斜杠。 -q "query" 启动 isql 时执行查询,但是在查询完成时不退出 isql。(注意查询语句不应包含 GO)。如果从批处理文件中发出查询,可使用 %variables。环境 %variables% 也可用。例如: SET table = sysobjects isql /q "Select * from %table%" 将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。 -Q "query" 执行查询,在查询完成时立即退出 isql。将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。 -n 从输入行中删除编号和提示符号 (>)。 -m error_level 自定义错误信息的显示。显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用 -1 指定与消息一起返回所有标题,即使是信息类的消息。如果使用 –1,则在参数和设置之间不能有空格(可以是 -m-1,不能是 -m -1)。 -r {0 | 1} 将消息输出重定向到屏幕 (stderr)。如果未指定参数,或指定参数为 0,那么仅重定向严重级别为 17 或更高的错误信息。如果指定参数为 1,则将重定向所有消息输出(包括 "print")。 -i input_file 标识包含一批 SQL 语句或存储过程的文件。小于 (<) 比较运算符可以用来代替 –i。 -o output_file 标识从 isql 接收输出的文件。大于 (>) 比较运算符可以用来代替 –o。 -p 打印性能统计。 -b 指定错误发生时 isql 退出并返回一个 DOS ERRORLEVEL 值。当 SQL Server 错误信息的严重级别为 10 或更高时,返回给 DOS ERRORLEVEL 变量的值为 1;否则,返回值为 0。MS-DOS 批处理文件可以测试 DOS ERRORLEVEL 的值并适当处理错误。 -O 指定 isql 还原为早期版本的行为。下列功能停用: EOF 批处理 控制台宽度自动调整 宽信息 该选项还将 DOS ERRORLEVEL 的默认值设置为 –1。 注释 所有 DB-Library 应用程序(如 isql)连接到 SQL Server 2000 后,作为 SQL Server 6.5 级客户端工作。它们不支持 SQL Server 2000 的某些功能。而 osql 实用工具是基于 ODBC 并支持 SQL Server 2000 的全部功能。使用 osql 运行 isql 无法运行的脚本。有关 SQL Server 6.5 级客户端限制的更多信息,请参见 SQL Server 联机丛书中的将早期版本客户端连接到 SQL Server 2000。 默认情况下,SQL 查询分析器将 SQL 脚本保存为 Unicode 文件。isql 实用工具不支持 Unicode 输入文件。尝试在 -i 开关中指定这些文件中的某一个时会导致错误 170: Incorrect syntax near ' '. 使用 osql 实用工具运行这些 Unicode 文件。另一种方法是在 SQL 查询分析器的"文件/另存为"对话框的"文件格式"列表中指定 ANSI 而非 Unicode。 与大多数 DB-Library 应用程序类似,isql 实用工具在默认情况下不设置任何连接选项。用户如果希望使用特定连接选项设置,必须交互地或在脚本中发出 SET 语句。 isql 实用工具从操作系统直接启动,并且使用本文中列出的区分大小写的选项。启动后,isql 接受 Transact-SQL 语句并将它们交互地发送到 SQL Server 2000。结果将格式化并打印到标准输出设备(屏幕)。可使用 QUIT 或 EXIT 退出 isql。 如果启动 isql 时未指定用户名,则 SQL Server 2000 将检查环境变量并使用它们,如 isqluser=(user) 或 isqlserver=(server)。如果未设置环境变量,则使用工作站用户名。如果未指定服务器,则使用工作站名称。 如果 -U 或 -P 选项都没有使用,则 SQL Server 2000 将尝试使用 Windows 身份验证模式进行连接。身份验证基于运行 isql 的用户的 Windows NT 帐户。 |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1746247