各位,麻烦帮看一下, 学习利用T_SQL建数据库,老报错,困扰我好几天了.求帮忙解惑
--将数据库上下文更改为指定数据库master(该数据库记录所有的登录帐户和系统配置设置)。
USE master;
GO
--判断数据库文件是否已存在
IF DB_ID(N'Mydb1') IS NOT NULL
DROP DATABASE Mydb1;
GO
[email protected]_path="C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\"
DECLARE @data_path nvarchar(256);
set @data_path=(select SUBSTRING(physical_name,1,CHARINDEX(N'master.mdf',LOWER(physical_name))-1) FROM master.sys.master_files WHERE database_id=1 AND file_id=1);
--创建数据库
CREATE DATABASE Mydb1
ON
(NAME='Mydb1_dat',
[email protected]_path+'Mydb1dat.mdf'+'''',
--FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\Mydb1dat.mdf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
;
GO
运行报错:
消息 102,级别 15,状态 1,第 8 行
'+' 附近有语法错误。
但如果用下面注释掉的, 就成功。 错误就在FILENAME的赋值,我不想直接赋一个死值, 我想用变量,就如同报错的那种形式,哪位大侠能告诉我, 怎么错了, 如何改吗?谢谢了。
------解决方案--------------------
- SQL code
--判断数据库文件是否已存在IF DB_ID(N'Mydb1') IS NOT NULL DROP DATABASE Mydb1;GO[email protected]_path="C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\"declare @data_path nvarchar(256);set @data_path=(select SUBSTRING(physical_name,1,CHARINDEX(N'master.mdf',LOWER(physical_name))-1) FROM master.sys.master_files WHERE database_id=1 AND file_id=1);--创建数据库declare @sql varchar(8000)set @sql='CREATE DATABASE Mydb1ON(NAME=''Mydb1_dat'', [email protected]_path+'Mydb1dat.mdf'', SIZE=10, MAXSIZE=50, FILEGROWTH=5)'exec (@sql)
------解决方案--------------------
- SQL code
USE master;GO--判断数据库文件是否已存在IF DB_ID(N'Mydb1') IS NOT NULL DROP DATABASE Mydb1;GO[email protected]_path="C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\"DECLARE @data_path nvarchar(256);set @data_path=(select SUBSTRING(physical_name,1,CHARINDEX(N'master.mdf',LOWER(physical_name))-1) FROM master.sys.master_files WHERE database_id=1 AND file_id=1);--创建数据库EXEC ('CREATE DATABASE Mydb1ON(NAME=''Mydb1_dat'', [email protected]_path+'Mydb1dat.mdf'', SIZE=10, MAXSIZE=50, FILEGROWTH=5);')GO