Sybase ASE自动创建数据库、登录以及用户的脚本
以下的脚本能够自动创建数据库、登录、用户并能给用户分配命令权限。只需要指定用户数据库的名称,数据设备、日志设备的大小,登录名称以及登录密码即可。
局限性:
没有判断即将要创建的设备是否存在?
将数据库设备创建在和master设备同一目录下,不能提高物理IO的性能。
脚本文件下载:sybase数据库自动创建脚本.sql
-----------------------------------------------------------------------------------------------------------------------------
use master
go
go
declare @dbname varchar(30)
declare @MasterDevicePath varchar(255),@LogicalDataDevName varchar(30),@LogicalLogDevName varchar(30)
declare @DATDevicePath varchar(255),@LOGDevicePath varchar(255),@DataDevSize int,@LogDevSize int,@DataDevPageCount int,@LogDevPageCount int
declare @SQLTEXT varchar(255)
declare @loginname varchar(30),@loginpasswd varchar(30)
declare @MasterDevicePath varchar(255),@LogicalDataDevName varchar(30),@LogicalLogDevName varchar(30)
declare @DATDevicePath varchar(255),@LOGDevicePath varchar(255),@DataDevSize int,@LogDevSize int,@DataDevPageCount int,@LogDevPageCount int
declare @SQLTEXT varchar(255)
declare @loginname varchar(30),@loginpasswd varchar(30)
set nocount on
begin
-- @dbname 代表将要创建的数据库名称
select @dbname='sybasenms'
-- @DataDevSize表示数据设备的大小(单位为:MBytes),@LogDevSize表示日志设备的大小(单位为:MBytes)
select @DataDevSize=100,@LogDevSize=50
-- 数据库登录名(密码与登录名相同),以及数据库用户名
select @loginname="sybasenms",@loginpasswd="sybasenms"
select @dbname='sybasenms'
-- @DataDevSize表示数据设备的大小(单位为:MBytes),@LogDevSize表示日志设备的大小(单位为:MBytes)
select @DataDevSize=100,@LogDevSize=50
-- 数据库登录名(密码与登录名相同),以及数据库用户名
select @loginname="sybasenms",@loginpasswd="sybasenms"
if not exists(select name from master.dbo.sysdatabases where name=@dbname)
begin
select @MasterDevicePath=phyname from master.dbo.sysdevices where name='master'
select @LogicalDataDevName=@dbname+'_dat',@LogicalLogDevName=@dbname+'_log'
select @DATDevicePath=left(@MasterDevicePath,len(@MasterDevicePath)-10)+@dbname+'_dat.dat'
select @LOGDevicePath=left(@MasterDevicePath,len(@MasterDevicePath)-10)+@dbname+'_log.dat'
-- 将设备的大小由MBytes换算成页数
select @DataDevPageCount=@DataDevSize*512,@LogDevPageCount=@LogDevSize*512
begin
select @MasterDevicePath=phyname from master.dbo.sysdevices where name='master'
select @LogicalDataDevName=@dbname+'_dat',@LogicalLogDevName=@dbname+'_log'
select @DATDevicePath=left(@MasterDevicePath,len(@MasterDevicePath)-10)+@dbname+'_dat.dat'
select @LOGDevicePath=left(@MasterDevicePath,len(@MasterDevicePath)-10)+@dbname+'_log.dat'
-- 将设备的大小由MBytes换算成页数
select @DataDevPageCount=@DataDevSize*512,@LogDevPageCount=@LogDevSize*512
-- 分别初始化数据设备和日志设备
disk init
name=@LogicalDataDevName,
physname=@DATDevicePath,
size=@DataDevPageCount
disk init
name=@LogicalLogDevName,
physname=@LOGDevicePath,
size=@LogDevPageCount
-- 创建数据库
select @SQLTEXT="create database "+@dbname+" on "+@LogicalDataDevName+"="+convert(varchar,@DataDevPageCount)+" log on "+@LogicalLogDevName+"="+convert(varchar,@LogDevPageCount)
execute(@SQLTEXT)
select @SQLTEXT="数据库:"+@dbname+"创建完成!"
print @SQLTEXT
-- 创建登录名和用户名,并给用户分配权限
use master
exec sp_addlogin @loginname,@loginpasswd,@dbname
use @dbname
exec sp_adduser @loginname,@loginname
select @SQLTEXT="grant create table ,create view,create procedure to "+@loginname
exec (@SQLTEXT)
if exists(select 1 from sysusers where name=@loginname)
begin
select @SQLTEXT="数据库用户:"+@loginname+"创建完成!"
print @SQLTEX
disk init
name=@LogicalDataDevName,
physname=@DATDevicePath,
size=@DataDevPageCount
disk init
name=@LogicalLogDevName,
physname=@LOGDevicePath,
size=@LogDevPageCount
-- 创建数据库
select @SQLTEXT="create database "+@dbname+" on "+@LogicalDataDevName+"="+convert(varchar,@DataDevPageCount)+" log on "+@LogicalLogDevName+"="+convert(varchar,@LogDevPageCount)
execute(@SQLTEXT)
select @SQLTEXT="数据库:"+@dbname+"创建完成!"
print @SQLTEXT
-- 创建登录名和用户名,并给用户分配权限
use master
exec sp_addlogin @loginname,@loginpasswd,@dbname
use @dbname
exec sp_adduser @loginname,@loginname
select @SQLTEXT="grant create table ,create view,create procedure to "+@loginname
exec (@SQLTEXT)
if exists(select 1 from sysusers where name=@loginname)
begin
select @SQLTEXT="数据库用户:"+@loginname+"创建完成!"
print @SQLTEX