从SELECT创建DB名称

时间:2018-06-06 08:25:44

标签: 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

可悲的是,这不起作用。我收到以下错误:

Incorrect syntax near '@release'

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

2 个答案:

答案 0 :(得分:1)

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

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

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)

答案 1 :(得分:1)

你可以这样做

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)