信息之舟电脑软件应用栏目编者按:
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.sql >; 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系统文件
Q.如何更改SQL Server名称(在UNIX、OPENVMS平台上)?
A.在SYBASE产品中没有特定的函数或者存储过程用来更改SQL Server/ASE Server的名称,因此,只能手 工修改某些参数或者配置来完成此任务。
需要修改interfaces文件;更改RUN_server_name文件名,并修改其内容,例如:-s(UNIX)、/SERVER (OpenVMS)后面所跟的参数(server 名称);更改配置文件名;更改errorlog文件名(如果需要);如 果server名称加在了表sysservers中,需要更改'srvname'、'srvnetname'列,可使用sp_dropserver、 sp_addserver存储过程来实现。
在OpenVMS系统中还要修改RUN_server_name文件中DSLISTEN的逻辑名称,以及在使用startserver过程中 /SERVER后面所跟的参数。然后,重启SQL/ASE Server。确认DSQUERY、DSLISTEN环境变量已经更改为所 需内容。
另外,如果SQL/ASE Server是被设置为远程服务器,还要修改与此server相关的系统表sysservers中的 字段以及interfaces文件。
理论上例如配置文件、RUN脚本、errorlog文件不需要指定server 名称(但是通常习惯指定server名 称)。在RUN startup脚本中要指定server名称。
您可以根据以下提纲完成此项任务:
如果server名称加在了表sysservers中,用sp_dropserver删除。 Shut down server 编辑 interfaces文件 更改RUN_server_name文件名,并修改其内容,-s(UNIX)、/SERVER(OpenVMS)后面所跟的参数(server 名称) 更改errorlog文件名(如果需要) 修改DSQUERY、DSLISTEN环境变量(如果需要) 更改配置文件名(server_name.cfg、server_name.bak、server_name.nnn),在SYBASE安装路径下Start server 使用sp_addserver重新添加server(如果需要) 如果server是作为远程server使用的,还需要删除并重新添加。
Q.如何配置SQL Server来做远程备份?
A.在本地机器上: (1).本地SQL Server和Backup Server能运行。 (2).在本地的Interfaces文件中,增加远程机器上的Backup Server名称,只需“Quary” 行,不允许使 用别名(aliases)。
请注意:在网络上每个Backup Server必须有一个唯一的名字,这个名字必须在 Interfaces文件之中,用 户可以通过查看服务器运行文件来检查它,它的选项是-S(unix) 或者/Server(VMS)。
(3).执行存储过程SP-helpServer SYB_BACKUP确认本地Backup Server具有正确的网络名称。远程Backup Server不一定非要在系统表Syservers中有一条记录不可,但是有它便于测试。
请注意:不要修改SYB_BACKUP,使它指向远程Backup Server名字。
在远程机器上:
(1).确认远程Backup Server正在运行。 (2).确认远程Backup Server有与本地Backup Server不同的网络名字。
请注意:在远程机器上的Interfaces文件中,必须包含远程Backup Server的定义记录,但是它不需其他 Backup Server的定义。
Q.如何配置SQL Server 11,使得快速BCP具有更好的性能?
A.有几种方法可以改善BCP的性能: (1)增加扩展分配(extent allocation)。缺省情况下,预分配2到31个扩展。在一个BCP批次中,未使用的 预分配扩展被释放。为了获得最佳BCP性能,设置BCP批次大小和 “number of preallocated extents” 预分配扩展个数,以消除空间重新释放。使用Sp_config number of pre-allocated exetents,nn 对于系 统10:buildmaster -ycpreallocext=nn (2)对表进行分区 (3)配置OAM页面的缓冲策略,以减少对OAM(Object Allocation Map)页面的物理读。 (4)配置大I/O的缓冲池,例如16K:
Sp-poolconfig default, "16K" (5)使用-A标记,加大网络包大小:
bcp -A 16384
 |