存档

‘Sybase ASE’ 分类的存档,文章数:183

选择菜单:开始>所有程序>Sybase>Sybase Central v6.0,打开Sybase Central程序,

在左边列表中,选择Adaptive Server Enterprise,并点右键,选择"连接",

点击Details按钮,显示服务器条目的详细信息,

在上图中,在Server name列表中选择将要连接的Sybase ASE数据库,下面的Host name和Port number对应的是服务器条目的信息。

User name和Password分别输入登录Sybase ASE数据库的登录账号和密码。

在Character set列表中选择字符集为:cp936

点击工具>Test Connection,来测试连接是否成功?

然后,在登录信息窗口中,点确定,连接上Sybultranms数据库。

Sybase ASE15.0.3客户端的安装介质和其它一些客户端组件(比如:PowerDesigner,PowerTransfer,InfoMaker等)一起被放置在一张光盘中。使用光盘或者将ASE客户端拷贝到硬盘上进行安装。下图是客户端介质光盘的目录列表。

    windows下的Sybase ASE客户端可以安装在32位和64位的平台上,分别对应目录下的pcclient32和pcclient64目录。

ASE 15.0.3 客户端 32位和64位下载地址:ase1503_client_win32_2.zip

    本文档演示在windows XP SP3环境上安装Sybase ASE客户端。进入目录pcclient32,有setup.exe 和 setupConsole.exe两个文件。

    双击setupConsole.exe进行Sybase ASE客户端的安装过程

  1. 导出表数据到文本文件

在用户表名上点右键,选择批量复制(bcp)下的输出菜单。

选择导出文件的路径。可以针对每个表分区分别指定输出文件路径。此表systbl_Counters仅有一个roundrobin分区。选择将所有分区的数据保存到:c:\sybase\dbo_systbl_Counters_BCP.out。 点下一步,

选择导出文件的格式:字符形式还是本地形式。选择字符形式。点下一步,

利用Sybase Central创建用户数据库

Sybase的数据库设备按照用途可以分为:数据设备和日志设备。建议将用户数据库的数据和日志分配到独立的数据库设备上。下面演示建立一个用户数据库,名字为:Demo,分配到两个数据库设备上:Demo_dat和 Demo_log。

  1. 创建数据库设备

用sa登录Sybase数据库,在左边的文件夹目录中选择"数据库设备",在"数据库设备"上点右键,选择 新建 > 数据库设备

选择 数据库设备 后,弹出如下的添加数据库设备的向导

先初始化数据库设备:Demo_dat,对应的设备物理文件路径为:d:\syb_data\Demo_dat.dat

请确保路径d:\syb_data存在,因为在初始化设备的时候Sybase不会建立相应的目录;保证目录d:\syb_data有足够的可用空间。

Oracle中查询月底那天的日期的函数为:last_day()。 在ASE中没有对应的函数,在Oracle移植到Sybase的时候,需要手动编写函数来实现,幸亏ASE15.0.2后开始支持自定义函数。

下面提供3种实现查询本月最后一天的日期的SQL语句:

第一种:

select dateadd(dd,-1,convert(char(8),(datepart(yy,dateadd(mm,1,getdate()))*10000+datepart(mm,dateadd(mm,1,getdate()))*100+01)))
go
 

将本月的下一个月的年份和月份提取出来,以数字的形式相加,然后转化成类似YYYYMMDD的这种日期格式。最后直接取下个月的第一天的前一天即可。在ASE中字符串 '20110101' 和 convert(datetime,'20110101') 是相等的。

 

第二种:

Sybase ASE在15.0.2后支持用户自定义函数,但是只能返回标量值,且调用的时候必须在函数名前加创建者的用户名,这一点很不友好哦。数据库的dbowner默认就有创建函数的权限。普通的用户默认不具有创建函数的权限。

用户escourt4创建自定义函数的时候报下面的错误:

Msg 10331, Level 14, State 1:
Server 'TEST', Procedure 'datefmt_lzf', Line 4:
CREATE FUNCTION permission denied, database ultranms2, owner dbo

但是Sybase自动的客户端工具Sybase Central中却没有能够授予创建函数权限的地方。

Sybase Central中授予用户权限

只能授予创建缺省值(create default),创建过程(create procedure),创建规则(create rule),创建表(create table),创建视图(create view),创建加密密钥的权限。

convert函数的style截止到ASE15.0.3有以下的样式!

Date format conversions using the style parameter

Without century (yy)

With century (yyyy)

Standard

Output

-

0 or 100

Default

mon dd yyyy hh:mm AM (or PM)

1

101

USA

mm/dd/yy

2

2

SQL standard

yy.mm.dd

3

103

English/French

dd/mm/yy

4

104

German

dd.mm.yy

5

105

 

dd-mm-yy

6

106

 

dd mon yy

7

107

 

mon dd, yy

8

108

 

HH:mm:ss

-

9 or 109

Default + milliseconds

mon dd yyyy hh:mm:ss AM (or PM)

10

110

USA

mm-dd-yy

11

111

Japan

yy/mm/dd

12

112

ISO

yymmdd

13

113

 

yy/dd/mm

14

114

 

mm/yy/dd

14

114

 

hh:mi:ss:mmmAM(or PM)

15

115

 

dd/yy/mm

-

16 or 116

 

mon dd yyyy HH:mm:ss

17

117

 

hh:mmAM

18

118

 

HH:mm

19

   

hh:mm:ss:zzzAM

20

   

hh:mm:ss:zzz

21

   

yy/mm/dd HH:mm:ss

22

   

yy/mm/dd HH:mm AM (or PM)

23

   

yyyy-mm-ddTHH:mm:ss

更新:2021-09-23

ASE 16.0 SP02 新增日期时间样式:

Without century (yy)

With century (yyyy)

Standard

Output

36 136

<hh:mm:ss.zzzzzz>AM (PM)

37 137

<hh:mm.ss.zzzzzz>
38
138

<mon dd yyyy hh:mm:ss.zzzzzz>AM (PM)
39
139

<mon dd yyyy hh:mm:ss.zzzzzz>

40

140


<yyyy-mm-dd hh:mm:ss.zzzzzz>

 

在数据库备份策略中,因为磁盘空间所限,需要删除N天前的备份文件。

本博客中有篇:实现连续N次备份数据库的脚本

其中有删除七日前的数据库备份文件的命令。那篇博客中利用了vbs处理日期的方法。但是,有点不妥当的地方,假如近七日内没有备份成功,或者说近七日内没有任何备份文件。如果删除了七日前的备份文件,那么就没有任何一个有效的备份文件了。这在数据库备份策略中是尤其需要注意的。

 

下面的命令不仅仅能够删除4天前的备份文件,而且能够保证有4天的备份文件。说白了也就是保留4份备份文件。呵呵。

del /f d:\123.txt && FOR /F "usebackq tokens=1,2,3*" %i IN (`dir E:\oracle\oradata\orcl /A-D /O-D ^| find ":"`) DO @echo %i %j=%l >>d:\123.txt
for /F "usebackq skip=5 delims== tokens=1*" %i in (d:\123.txt) do echo del /f %j

 

注释:skip=5表示跳过前4行记录。d:\123.txt是保存临时数据的文件,可以改成其他,比如: %temp%\123.txt

目录E:\oracle\oradata\orcl为备份文件所在路径。

如果放在bat脚本文件中执行上面的2行命令。需要将 %i之类的替换成 %%i

将上面2行命令的第2行中加粗字体的echo去掉,就能够实现删除操作了。 为了保险起见,先打印出删除文件的语句。

另:关于for循环命令的用法可以参考:CMD命令行:for命令详解[转]