Sql server 从SELECT创建数据库名称
我正在尝试创建SQL脚本,将旧数据移动到单独的数据库中。 我现在的问题是,我想从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 遗憾的是,这不起作
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)代码>或类似的东西。