I am using the following script:
DECLARE @dbName NVARCHAR(20) = \'ABC\';
EXEC ( N\' USE \' + @dbName + \'
GO
-- Create Schema
CREATE SCHEMA meta
GO
-- Create L
Try removing comma after [EventType] [nvarchar](64) NULL,
and see if the error message changes.
So you have 2 problems:
meta.LogAudit
table columns definition.Try running this code:
DECLARE @dbName NVARCHAR(20) = 'ABC';
declare @sql nvarchar(max) = N'exec '+ @DBName + '..sp_executesql N''CREATE SCHEMA meta'''
execute(@sql)
declare @sql2 nvarchar(max) = '
-- Create Log Table
CREATE TABLE '+ @DBName + '.meta.LogAudit(
[EventDate] [datetime] NOT NULL DEFAULT (getdate()),
[EventType] [nvarchar](64) NULL
)'
exec sp_executesql @sql2,N''
It will allow you to programmatically create schema in the specified Database as opposite to using current database.
You can use following script for solution to your requirement with the help of unsupported undocumented stored procedure sp_MSForEachDB
EXEC sp_MSForEachDB '
Use [?];
IF ''[?]'' = ''[ABC]''
begin
-- Create Schema
exec sp_executesql N''CREATE SCHEMA meta''
end
'
EXEC sp_MSForEachDB '
Use [?];
IF ''[?]'' = ''[ABC]''
begin
-- Create Log Table
CREATE TABLE meta.LogAudit(
[EventDate] [datetime] NOT NULL DEFAULT (getdate()),
[EventType] [nvarchar](64) NULL,
)
end'