Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SELECT创建数据库名称_Sql Server_Tsql - Fatal编程技术网

Sql server 从SELECT创建数据库名称

Sql server 从SELECT创建数据库名称,sql-server,tsql,Sql Server,Tsql,我正在尝试创建SQL脚本,将旧数据移动到单独的数据库中。 我现在的问题是,我想从SELECT语句中命名数据库 use DBName; declare @release varchar(max) set @release = concat('Release_',(select MetaRevision from metarevision)) select @release if db_id(@release) is null create database @release 遗憾的是,这不起作

我正在尝试创建SQL脚本,将旧数据移动到单独的数据库中。 我现在的问题是,我想从SELECT语句中命名数据库

use DBName;
declare @release varchar(max)
set @release = concat('Release_',(select MetaRevision from metarevision))
select @release

if db_id(@release) is null create database @release
遗憾的是,这不起作用。我得到以下错误:

Incorrect syntax near '@release'

有没有办法从Select语句中命名数据库?

谢谢您的帮助。我找到了一个包含ta.speot.is和信息的解决方案

对于未来,这是解决方案:

use DBName;
declare @release varchar(14)
set @release = concat('Release_',(select MetaRevision from metarevision))

declare @quoted varchar(16);
set @quoted =  quotename(@release);

if db_id(@release) is null exec ('create database ' + @quoted)

你可以这样做

declare @release varchar(max)
set @release = concat('Release_','TestOst') //Replace TestOst with your metadata
select @release

if db_id(@release) is null 

declare @SQL nvarchar(max)

SET @SQL = 'create database '+quotename(@release)

exec(@SQL)

exec('create database'+quotename(@release))
或类似的东西。解释原因:
create database
的参数是名称,而不是字符串/varchar。换句话说,
create database XYZ
是正确的,而
create database'XYZ
不是正确的,这就是为什么不允许
create database@release
的原因。as@ta.speot.是否建议您需要动态SQL?是否有解决方法quotename不起作用。
声明@release nvarchar(10)=“abc”;声明@sql nvarchar(100)=“创建数据库”+quotename(@release);exec(@sql)或类似的东西。