sql server,想求教一下关于通过变量声明@创建新数据库的方法,谢谢!

目的很简单,就是想通过Transact-SQL变量的声明的方式创建一个新的数据库,但是不会弄,一般普通的创建数据库语句是如下这样的:createdatabase[14年4... 目的很简单,就是想通过Transact-SQL变量的声明的方式创建一个新的数据库,但是不会弄,一般普通的创建数据库语句是如下这样的:
create database [14年4月底a]
on
primary(
name='14年4月底a',
filename='F:\sqlserver数据与日志\数据\14年4月底a.mdf',
SIZE=3MB,
FILEGROWTH=1MB
)
LOG ON
(
NAME='14年4月底a_LOG',
FILENAME='F:\sqlserver数据与日志\日志\14年4月底a_log.ldf',
SIZE=1MB,
FILEGROWTH=10%
)
但是如果我想把数据库的名字作为变量,应该要怎么做?我写的如下脚本,但是不成功,不知道该怎么办。。。
declare @i varchar(500),@j varchar(500),@k varchar(500),@l varchar(500),@sql varchar(500)
set @i='14年4月底a'
set @j='F:\sqlserver数据与日志\数据\14年4月底a.mdf'
set @k='F:\sqlserver数据与日志\日志\14年4月底a_log.ldf'
set @l=@i+'_log'
set @sql='create database ['+@i+']
on
primary (
name='+'''+@i+'''+','+
'filename='+'''+@j+'''+','+
'SIZE=3MB,
FILEGROWTH=1MB
)'+'
LOG ON
(
NAME='+'''+@l+'''+','+
'FILENAME='+'''+@k+'''+','+
'SIZE=1MB,
FILEGROWTH=10%
)'
exec(@sql)
执行失败,如截图所示

求各位大神指导,以上的语法到底出了什么问题?应该要怎么做才能达到目的呢?
感觉好像是单引号的问题,
如果没有变量的原来的语句中有单引号’的话,放到变量赋值中的字符串应该怎么表示?
展开
 我来答
布萌布咕咕
2014-05-20 · 超过27用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:51.9万
展开全部
exec(@sql)
改为 exec sp_executesql @sql
对应的文件夹存在,如果还是不对,@i,@j 的赋值的单引号前加上大写N试试
追问

还是不行,执行结果如图所示

追答
@i和@j没有拼对语句。
declare @i varchar(500),@j varchar(500),@k varchar(500),@l varchar(500),@sql varchar(500)

set @i='14年4月底a'

set @j='F:\sqlserver数据与日志\数据\14年4月底a.mdf'

set @k='F:\sqlserver数据与日志\日志\14年4月底a_log.ldf'

set @l=@i+'_log'

set @sql='create database ['+@i+']

on

primary (

name='''+@i+''','+

'filename='''+@j+''','+

'SIZE=3MB,

FILEGROWTH=1MB

)'+'

LOG ON

(

NAME='''+@l+''','+

'FILENAME='''+@k+''','+

'SIZE=1MB,

FILEGROWTH=10%

)'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cbswlj
2023-12-24
知道答主
回答量:1
采纳率:0%
帮助的人:161
展开全部
刚开始学习server,遇到同样的问题,虽然是十年前的问题,为方便后来者,在此解答。
@i和@l属于数据库名,在name中不应该用单引号,应该用中括号,其他内容不变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
realsex
2014-05-20 · TA获得超过1259个赞
知道小有建树答主
回答量:717
采纳率:0%
帮助的人:506万
展开全部
用Exec命令,先把以上Create语句拼接成字符串,再用execsql执行即可
追问
  • 什么意思?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式