sybase数据库sql常见问题处理
根据给定的信息,本文将详细解释Sybase数据库中常见的SQL操作问题及解决方法,并通过具体的命令和示例来深入分析。 ### Sybase数据库SQL常见问题处理 #### 一、监控与配置 **1. CPU使用情况** 为了了解Sybase数据库在运行过程中对CPU资源的消耗情况,可以使用以下命令: ```sql EXEC sp_sysmon 'internal', 'model'; ``` 其中,`internal`参数用于显示内部引擎的活动情况,`model`参数则列出所有可用的模型名称。这些模型包括: - `kernel`: 核心服务 - `wpm`: 写入进程管理 - `parallel`: 并行处理 - `taskmgmt`: 任务管理 - `appmgmt`: 应用程序管理 - `esp`: 事件处理服务 - `housekeeper`: 清理维护任务 - `monaccess`: 监控访问 - `xactsum`: 事务总结 - `xactmgmt`: 事务管理 - `indexmgmt`: 索引管理 - `mdcache`: 元数据缓存 - `locks`: 锁机制 - `dcache`: 数据缓存 - `pcache`: 页面缓存 - `memory`: 内存管理 - `recovery`: 恢复管理 - `diskio`: 磁盘I/O - `netio`: 网络I/O 通过以上模型可以获取详细的内部引擎活动时间统计,例如: ```sql "00:01:00" ``` 这表示某个模型的内部引擎活动时间为1分钟。 若要查看Sybase系统允许的最大在线引擎数量,则可以执行如下命令: ```sql EXEC sp_configure 'maxonlineengines'; ``` 需要注意的是,调整`maxonlineengines`参数可能会影响Sybase系统的整体性能。 **2. 监控引擎状态** 要查看每个引擎的状态,可以使用以下命令: ```sql SELECT engine, status, affinitied, starttime FROM sysengines; ``` 该命令可以帮助我们了解各个引擎当前的工作状态以及它们何时被激活。 此外,还可以通过以下命令获取更为详细的监控统计数据: ```sql EXEC sp_reportstats; ``` 这有助于进一步诊断系统性能问题。 **3. 监控资源使用** 要监控开放对象的数量,可以使用如下命令: ```sql EXEC sp_monitorconfig 'openobjects'; ``` 如果需要更改此配置项的值,可以通过修改`sp_monitorconfig`的设置来实现。 ### 二、权限管理 **1. 授予权限** - **授予用户所有权限**: ```sql GRANT ALL TO user_name; ``` - **授予用户特定表上的所有权限**: ```sql GRANT ALL ON table_name TO user_name; ``` - **创建登录名**: 使用`sp_addlogin`存储过程可以添加新的登录名: ```sql EXEC sp_addlogin @loginame = 'login_name', @password = 'password', @defdb = 'database_name'; ``` **2. 管理统计信息** 要查看所有表和视图的统计信息,可以使用以下命令: ```sql SELECT "PRINT '" + name + "' " + CHAR(10) + "UPDATE STATISTICS " + name + CHAR(10) + "GO" FROM sysobjects WHERE (type = 'U' OR type = 'S') ORDER BY name; ``` 此命令将返回一个列表,显示所有的表和视图,并提示更新其统计信息。 **3. 触发器管理** 要查看触发器的相关信息,可以执行以下查询: ```sql SELECT USER_NAME(A.uid) AS TableOwner, B.name AS TableName, A.name AS TriggerName, CONVERT(char(10), A.crdate, 101) + SUBSTRING(CONVERT(char(20), A.crdate, 0), 13, 7) AS CreateDate FROM sysobjects A, sysobjects B WHERE A.type = 'TR' AND (A.id = B.instrig OR A.id = B.updtrig OR A.id = B.deltrig); ``` 该查询返回的结果集包含了触发器的所有者、关联的表名、触发器名称及其创建日期等信息。 ### 三、外键约束 为了生成外键约束的SQL语句,可以使用以下命令: ```sql SELECT DISTINCT result_sql = 'ALTER TABLE ' + RTRIM(object_name(tableid)) + ' ADD CONSTRAINT ' + RTRIM(object_name(constrid)) + ' FOREIGN KEY (' + COL_NAME(sysreferences.tableid, sysreferences.fokey1) + CASE WHEN sysreferences.fokey2 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey2) ELSE '' END + CASE WHEN sysreferences.fokey3 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey3) ELSE '' END + CASE WHEN sysreferences.fokey4 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey4) ELSE '' END + CASE WHEN sysreferences.fokey5 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey5) ELSE '' END + CASE WHEN sysreferences.fokey6 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey6) ELSE '' END + CASE WHEN sysreferences.fokey7 > 0 THEN ',' + COL_NAME(sysreferences.tableid, sysreferences.fokey7) ELSE '' END + ')' + ' REFERENCES ' + RTRIM(object_name(reftabid)) + '(' + COL_NAME(sysreferences.reftabid, sysreferences.refkey1) + CASE WHEN sysreferences.refkey2 > 0 THEN ',' + COL_NAME(sysreferences.reftabid, sysreferences.refkey2) ELSE '' END + CASE WHEN sysreferences.refkey3 > 0 THEN ',' + COL_NAME(sysreferences.reftabid, sysreferences.refkey3) ELSE '' END + ')' FROM sysreferences ``` 该查询将返回一个包含创建外键约束所需SQL语句的结果集。这些SQL语句可用于修改现有表结构或创建新表时定义外键关系。 通过上述命令和方法,我们可以有效地管理和优化Sybase数据库中的SQL操作,提高数据库的整体性能和稳定性。
常用的命令集合
一、配置命令
1、检查CPU使用情况:
sp_sysmon "internal","model"
internal是监视时间。例如:"00:01:00"
model是模块的名称。包括'kernel','wpm','parallel','taskmgmt','appmgmt','esp','housekeeper','monaccess','xactsum','xactmgmt','indexmgmt','mdcache','locks','dcache','pcache','memory','recovery','diskio','netio'
2、检查使用的最大的引擎数(CPU)
sp_configure "max online engines"
此命令还可以改变sybase系统使用CPU的数量。
注意:改变后需要重新启动sybase才可以使培植生效。引擎的数量是总的CPU数量减一
3、显示引擎号、状态、相关任务数以及引擎启动的时间:
select engine, status, affinitied, starttime from sysengines
4、显示每个用户的繁忙程度
sp_reportstats
5、监视配置参数的运行情况
sp_monitorconfig "open objects"
参数见sp_monitorconfig中的值
二、权限命令
1、给一个用户授所有的权限
grant all to user_name
2、给一个用户授对某张表的所有权限
grant all on table_name to user_name
sp_addlogin
三、TSQL使用
1、统计信息更新
select "print '"+name+"'"+char(10)+"update statistics "+name+ char(10) + "go"
from sysobjects
where (type='U' or type='S')
order by name
2、显示所有触发器的名称、建立时间
SELECT USER_NAME(A.uid) 'Table Owner',
B.name 'Table Name',
A.name 'Trigger Name',
CONVERT(char(10),A.crdate,101)+SUBSTRING(CONVERT(char(20),A.crdate,0),13,7) 'Create Date'
FROM sysobjects A,
sysobjects B
WHERE A.type='TR'
AND (A.id=B.instrig OR A.id=B.updtrig OR A.id=B.deltrig)
3、关于参照
--生成建立已有参照的SQL语句
select distinct result_sql='alter table '+rtrim(object_name(tableid))+' add constraint '
+rtrim(object_name(constrid))+' foreign key('+
+col_name(sysreferences.tableid,sysreferences.fokey1)+substring(',',1,sysreferences.fokey2)
+col_name(sysreferences.tableid,sysreferences.fokey2)+substring(',',1,sysreferences.fokey3)
+col_name(sysreferences.tableid,sysreferences.fokey3)+substring(',',1,sysreferences.fokey4)
+col_name(sysreferences.tableid,sysreferences.fokey4)+substring(',',1,sysreferences.fokey5)
+col_name(sysreferences.tableid,sysreferences.fokey5)+substring(',',1,sysreferences.fokey6)
+col_name(sysreferences.tableid,sysreferences.fokey6)+substring(',',1,sysreferences.fokey7)
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助