0
データベースのバックアップを複数のファイルに保存するストアドプロシージャを作成しました。SQL Serverでの動的クエリの実行
これは私のストアドプロシージャです:私が得る
exec [BackupJob] 'PRIMARY', 'E:\trybackup',2
:私は、ストアドプロシージャを印刷し、それを実行した場合
ALTER PROCEDURE [dbo].[BackupJob]
(
@FileGroup NVARCHAR(1000),
@Path NVARCHAR(MAX),
@NoOfFile INT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQLQuery AS NVarChar(MAX)
DECLARE @SQLSubQuery AS NVarChar(MAX)
DECLARE @ParamDefintion AS NVarChar(2000)
DECLARE @Err Int
DECLARE @i Int
DECLARE @Backup_Name NVarChar(max)
DECLARE @DB_Name NVarChar(max)
SELECT @DB_Name = DB_NAME()
SET @i=1;
-- SELECT statements for procedure here
SET @SQLQuery = '
BACKUP DATABASE ['[email protected]_Name+'] FILEGROUP = '''[email protected]+''' TO '
PRINT (@SQLQuery)
WHILE (@i <= @NoOfFile)
BEGIN
SELECT @Backup_Name = @Path + '\'+ DB_NAME()+ '_' + @FileGroup +'_' + CONVERT(VARCHAR(10), GETDATE(), 112)+ '_' + CONVERT(nvarchar,@i)+'.bak'
SET @SQLSubQuery =ISNULL(@SQLSubQuery,'') + ' DISK = '''+ @Backup_Name + ''''
IF(@i<@NoOfFile)
BEGIN
SET @SQLSubQuery [email protected] + ','
END
SET @i = @i + 1
END
SET @SQLQuery = @SQLSubQuery + ' WITH CHECKSUM'
PRINT (@SQLQuery)
EXECUTE (@SQLQuery)
SET @Err = @@Error
RETURN (@Err)
END
、それがうまく動作しますが、私はこのようなストアドプロシージャを実行した場合エラー:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '='.
これに関するお勧めはありますか?
おかげ
タグを使用しているDBMS。そのコードは製品固有です。 – jarlh
このSPを任意のSQL Serverデータベースで実行すると、そのデータベースのバックアップが作成されます – Dilip
SPは、実行するすべての動的SQLに対して有用な 'PRINT'ステートメントを発行します。構文エラーの出力を確認してください。 –