存档
mark:
rand2() ASE 15.0.2
newid() ASE 12.5.1
rand() Any Version
set rowcount N
select * from table order by rand(convert(int,row1)+datepart(ms,getdate()))
set rowcount 0
本博客已经有一篇关于的:Sybase ASE 统计当前执行的SQL语句的存储过程!
现在提供另外一种方法:使用系统存储过程sp_monitor查看当前数据库连接中正在执行的SQL语句信息!
sp_monitor connection
在执行上面语句之前需要启用对connection的监控, 执行:sp_monitor enable,connection。可以在监控完成后关闭该选项。
设置参数:max SQL text monitored为2048,该参数为静态参数,需要重启ASE。
sp_monitor connection的结果默认按照连接占用的cpu时间和等待时间的总和进行逆序排序。
sp_monitor connection的第二个参数有:cpu , diskio , elapsed time 分别表示按照cpu时间、物理读取次数、cpu时间+等待时间 进行逆序排序。
在查看完正在执行的SQL语句内容后,关闭对connection的监控以减少对生产服务器的影响。
执行的语句如下:
sp_configure "max SQL text monitored",2048
go
--reboot ASE
--...
sp_monitor enable,connection
go
sp_monitor connection
go
-- some SQL statement
-- ...
sp_monitor disable,connection
go
以将dbo创建的所有表授予相应权限给普通用户userA为例。
将dbo拥有的表的相应权限(select/insert/update/delete)授予给普通用户userA,使用以下SQL生成授权语句:
select 'grant select on ' + user_name(uid) + '.' + name + ' to userA' from sysobjects where type='U' and uid=user_id('dbo')
union all
select 'grant insert on ' + user_name(uid) + '.' + name + ' to userA' from sysobjects where type='U' and uid=user_id('dbo')
union all
select 'grant update on ' + user_name(uid) + '.' + name + ' to userA' from sysobjects where type='U' and uid=user_id('dbo')
union all
select 'grant delete on ' + user_name(uid) + '.' + name + ' to userA' from sysobjects where type='U' and uid=user_id('dbo')
查看某张表的上用户的权限情况:
sp_helprotect table_name
查看用户所拥有的对象权限情况:
sp_helprotect user_name
1、准备环境
首先确保sql.ini中包含主、备服务器名称;
创建master设备所在的目录;
主服务器和备份服务器的RUN_file文件;
2、使用命令初始化master设备
D:\ASE\sybase157\ASE-15_0\bin\sqlsrvr.exe -dD:\ASE\sybase157\data2\master.dat -b100M -Z80M -z2048 -eD:\ASE\sybase157\ASE-15_0\install\ASE157_2K.log -sASE157_2K -MD:\ASE\sybase157\ASE-15_0
3、使用RUN_file启动新创建的服务
在windows创建的主服务的默认字符集为:cp850;
默认包含以下系统数据库:
1> select dbid,name from sysdatabases order by dbid
2> go
dbid name
------ ------------------------------
1 master
2 tempdb
3 model
31513 sybsystemdb
(4 rows affected)
4、创建sybsystemprocs数据库
1、ASE的dsync和directio属性都是针对文件系统上的设备文件的,不适用于裸分区/原始分区。
2、dsync和directio是互斥的,也就是: dsync on对应 directio off , directio on对应dsync off。dsync和directio不能同时启用,但是可以同时关闭。
如果已将设备的dsync属性配置为on,那么不能再将directio设置为on;如果想设置directio为on,那么必须先将dsync设置为off。
3、dsync on/off表示ASE是否保证把数据写入到设备上面去;directio on/off表示ASE是否跳过操作系统的文件系统缓存。
- dsync on和directio off表示ASE的写操作直接在存储介质上进行,能够保证数据完全写入到设备上以及数据库的可恢复性;
- dsync off和directio on表示ASE的写操作跳过操作系统缓冲区高速缓存,直接将数据传输到磁盘,不能保证数据真正写入到设备上;
- dsync off和directio off表示使用文件系统的缓存。
4、在SUSE上测试ASE 15.7使用文件系统设备文件时默认是directio on(dsync off),已经跳过文件系统缓存了。
ASE全局环境变量@@servername保存当前的服务器名称。
假如将ASE服务器名称从ase1503test修改成ase1503xen,
下面是修改ASE服务器名称的步骤:
学习使用Jmeter对数据库进行压力测试。JMeter中称之为测试计划!
JMeter的一个测试计划,包括:线程组、数据库连接、前置处理器、Sampler、后置处理器、监控结果等。
1.添加线程组:在测试计划上点右键,选择:添加》Threads(Users)》线程组;
2.添加JDBC Connection Configuration: 在线程组上点右键,选择:添加》配置元件》JDBC Connection Configuration;
3.添加前置处理器:在线程组上点右键,选择:添加》前置处理器》JDBC PreProcessor;
4.添加Sampler:在线程组上点右键,选择:添加》Sampler》JDBC Request;
5.添加后置处理器:在线程组上点右键,选择:添加》后置处理器》JDBC PostProcessor;
6.添加监控结果:在线程组上点右键,选择:添加》监听器, 可以使用 Summary Report、图形结果、用表格查看结果、监视器结果等等。
7.添加Random Variable:添加》配置元件》Random Variable;
可以设置上下级关系。
第三方工具连接ASE时,主要使用的接口方法包括:open-client 、ADO.NET和 jdbc。
第三方工具主要包括:
使用open-client接口的工具有:PowerBuilder、DBArtisan、Werysoft QweryBuilder等;WinSQL有自己的数据链接库,类似open-client方式;
使用jdbc接口的工具有:Aqua Data Studio、DbVisualizer、RazorSQL、DBeaver、DBArtisan 等;
使用ADO.NET接口的工具有:Toad for Sybase等;
解决方法:
使用open-client接口时,不需要将disable character set convers设置为1,仅需要在客户端工具中将显示字符集调整为服务器端字符集,可能有时候也需要调整一下显示的字体。
使用jdbc接口时,需要将disable character set convers设置为1,并在jdbc的连接串中将charset设置为cp936。
对于服务器端字符集为:iso_1且参数disable character set convers为默认值0的环境,可在jdbc连接串中添加:?SQLInitString=set char_convert off&charset=cp936
因此:
如果disable character set convers设置为1,两种类型的工具都可以使用。
如果disable character set convers为默认值0,那么建议使用open-client接口的工具。
以上情况适用于服务器端为iso_1,cp936等字符集的情况。