更新时间:2023-02-05 18:42:20
因为你没有初始化@Query。
你的
Because you didn't initialise @Query.
Your
DECLARE @Query VARCHAR(MAX)
应该是
should be
DECLARE @Query VARCHAR(MAX) = ''
so :
so:
ALTER PROC [dbo].[CreateDatabase]
(
@DatabaseName NVARCHAR(MAX),
@TableName NVARCHAR(MAX) = 'LogAlarm',
@path NVARCHAR(MAX) = 'D:\BackupDatabase\'
)
AS
EXECUTE(N'
IF NOT EXISTS
(
SELECT * FROM sys.databases WHERE [name] = ''' + @DatabaseName + '''
)
BEGIN
DECLARE @Query VARCHAR(MAX) = '' -- <-- ADD THIS BIT
SET @Query = @Query + ''CREATE DATABASE '+@DatabaseName +' ON PRIMARY ''
SET @Query = @Query + ''( NAME = '''''+@DatabaseName +''''', FILENAME = '''''+@path+@DatabaseName +'.mdf'''' )''
SELECT(@Query)
END
')
您好,
请用此更改您的程序
Hi,
Please Alter your Procedure with this
ALTER PROC [dbo].[CreateDatabase]
(
@DatabaseName NVARCHAR(MAX),
@TableName NVARCHAR(MAX) = 'LogAlarm',
@path NVARCHAR(MAX) = 'D:\BackupDatabase\'
)
AS
BEGIN
DECLARE @Query NVARCHAR(MAX),
@DBName Nvarchar(100),
@LogName NVARCHAR(100),
@LogFile NVARCHAR(100)
SET @DBName = @DatabaseName+'.mdf'
SET @LogName = @DatabaseName+'_log'
SET @LogFile = @DatabaseName+'_log.ldf'
SET @Query =
'
IF NOT EXISTS
(
SELECT * FROM sys.databases WHERE [name] = ''' + @DatabaseName + '''
)
BEGIN
CREATE DATABASE [' + @DatabaseName +'] ON PRIMARY ( NAME = N'''+ @DatabaseName + ''', FILENAME = N'''+@path+@DBName+''', SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'''+ @LogName +''', FILENAME = N'''+@path+@LogFile+''' , SIZE = 1024KB , FILEGROWTH = 10%)
END'
EXEC (@Query);
END
问候,
Ahmed Mandour
Regards,
Ahmed Mandour