各位,麻烦帮看一下, 学习利用T_SQL建数据库,老报错,困扰我好几天了.求帮忙解惑--将数据库上下文更改为指定数据库master(该数据库记录所有的登录帐户和系统配置设置)。
USE master;
GO
--判断数据库文件是否已存在
IF DB_ID(N'Mydb1') IS NOT NULL
DROP DATABASE Mydb1;
GO
--获取服务器所在的路径。@data_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',
FILENAME=''''+@data_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的赋值,我不想直接赋一个死值, 我想用变量,就如同报错的那种形式,哪位大侠能告诉我, 怎么错了, 如何改吗?谢谢了。
USE master;
GO
--判断数据库文件是否已存在
IF DB_ID(N'Mydb1') IS NOT NULL
DROP DATABASE Mydb1;
GO
--获取服务器所在的路径。@data_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',
FILENAME=''''+@data_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的赋值,我不想直接赋一个死值, 我想用变量,就如同报错的那种形式,哪位大侠能告诉我, 怎么错了, 如何改吗?谢谢了。
--判断数据库文件是否已存在
IF DB_ID(N'Mydb1') IS NOT NULL
DROP DATABASE Mydb1;
GO
--获取服务器所在的路径。@data_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 Mydb1
ON
(NAME=''Mydb1_dat'',
FILENAME='''+@data_path+'Mydb1dat.mdf'',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)'
exec (@sql)
GO
--判断数据库文件是否已存在
IF DB_ID(N'Mydb1') IS NOT NULL
DROP DATABASE Mydb1;
GO
--获取服务器所在的路径。@data_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 Mydb1
ON
(NAME=''Mydb1_dat'',
FILENAME='''+@data_path+'Mydb1dat.mdf'',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=5)
;
')
GO