I need to create a database but taking a name and path from variables:
declare @Datapath nvarchar = serverproperty('InstanceDefaultDataPath');
declare @Database nvarchar = 'DatabaseName';
use master
go
if exists (select name from sys.databases where name = '@Database')
drop database [@Database]
go
create database [@Database]
on primary (
name = '@Database_Data'),
filename = concat(@Datapath, '@Database_Data.mdf'),
size = 200MB,
maxsize = 20GB,
filegrowth = 40MB
)
collate Latin1_General_CI_AI
go
But I get the error on first line:
Implicit conversion from data type sql_variant to nvarchar is not allowed. Use the CONVERT function to run this query.
And I am also getting an error on concat function.
I would like to use @Datapath and @Database on my query.
What am I missing?
UPDATE 1
declare @Datapath nvarchar(200) = cast(serverproperty('InstanceDefaultDataPath') as nvarchar(200));
declare @Database nvarchar(50) = 'DatabaseName';
use master
go
if exists (select name from sys.databases where name = '@Database')
drop database [@Database]
go
create database [@Database]
on primary (
name = '@Database',
filename = concat(@Datapath, '@Database_Data.mdf'),
size = 200MB,
maxsize = 20GB,
filegrowth = 40MB
)
collate Latin1_General_CI_AI
go