存档
选择菜单:开始>所有程序>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客户端的安装过程
-
导出表数据到文本文件
在用户表名上点右键,选择批量复制(bcp)下的输出菜单。
选择导出文件的路径。可以针对每个表分区分别指定输出文件路径。此表systbl_Counters仅有一个roundrobin分区。选择将所有分区的数据保存到:c:\sybase\dbo_systbl_Counters_BCP.out。 点下一步,
选择导出文件的格式:字符形式还是本地形式。选择字符形式。点下一步,
利用Sybase Central创建用户数据库
Sybase的数据库设备按照用途可以分为:数据设备和日志设备。建议将用户数据库的数据和日志分配到独立的数据库设备上。下面演示建立一个用户数据库,名字为:Demo,分配到两个数据库设备上:Demo_dat和 Demo_log。
-
创建数据库设备
用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中却没有能够授予创建函数权限的地方。
只能授予创建缺省值(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命令详解[转]