--create database 后面的库名之类不能用变量,-- 改成exec封装就行了 create procedure createdatabase( @dbname as varchar(20), @dat_name as varchar(20), @dat_filepath as varchar(255), @mdfname as varchar(20), @dat_size as int, @dat_maxsize as int, @dat_filegrowth as int) AS declare @s nvarchar(4000) if exists (select * from master.dbo.sysdatabases where name=@dbname ) exec('drop database ['+@dbname+']') set @s=' CREATE DATABASE ['+@dbname+'] ON ( NAME = ['+@dat_name+'], FILENAME ='''+ @dat_filepath+'\'+@mdfname+'.mdf'', SIZE = '+rtrim(@dat_size)+', MAXSIZE ='+rtrim(@dat_maxsize)+', FILEGROWTH ='+rtrim(@dat_filegrowth)+' )' exec(@s) go--调用 exec createdatabase 'a','aa','c:\','aa',1,1,1 go
--3、在SQL SERVER中,用手工执行命令方式备份数据库?backup database 库名 to disk='c:\备份文件名'--更详细的语法参考SQL联机帮助
create procedure createdatabase(
@dbname as varchar(20),
@dat_name as varchar(20),
@dat_filepath as varchar(255),
@mdfname as varchar(20),
@dat_size as int,
@dat_maxsize as int,
@dat_filegrowth as int)
AS
declare @s nvarchar(4000)
if exists (select * from master.dbo.sysdatabases where name=@dbname )
exec('drop database ['+@dbname+']')
set @s='
CREATE DATABASE ['+@dbname+']
ON
( NAME = ['+@dat_name+'],
FILENAME ='''+ @dat_filepath+'\'+@mdfname+'.mdf'',
SIZE = '+rtrim(@dat_size)+',
MAXSIZE ='+rtrim(@dat_maxsize)+',
FILEGROWTH ='+rtrim(@dat_filegrowth)+' )'
exec(@s)
go--调用
exec createdatabase 'a','aa','c:\','aa',1,1,1
go