私の質問は私のタイトルにあります、私は次のようにストアドプロシージャを定義しました
CREATE PROCEDURE [dbo].[sp_doStuff]
@path CHAR(256), @databaseName sysname, @backupType CHAR(1)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @dateTime NVARCHAR(20)
SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),111),'/','') +
REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')
IF @backupType = 'F'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ' + @path + @databaseName + '_Full_' + @dateTime + '.BAK'''
IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ' + @path + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL'
IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName +
' TO DISK = ' + @path + @databaseName + '_Log_' + @dateTime + '.TRN'''
EXECUTE sp_executesql @sqlCommand
END
次のコマンドを実行したい場合:
[dbo].[sp_doStuff] 'D:\FolderName\', 'MyDatabase', 'F';
それは私にこのエラーを与えます:
メッセージ102、レベル15、状態1、行1
「D:」の近くの構文が正しくありません。
メッセージ105、レベル15、状態1、行1
文字列''の後の閉じられていない引用符。
なぜこれがエラーになるのか、誰かが手がかりを持っていますか?パスをプロシージャにハードコーディングすることで機能させることができますが、パラメータで渡すことができるようにしたいと思います。