Service Pack 1 がインストールされた SQL Server 2008 64 ビット Developer Edition を実行しています。SQL Server エージェント ジョブがあります。このジョブ内で、自分のジョブの job_id を取得したいと考えています。
MSDN ( http://msdn.microsoft.com/en-us/library/ms175575(v=SQL.100).aspx ) で、ジョブ ステップでのトークンの使用に関する説明を見つけることができます。うわー、素晴らしい、それが私が探しているものです!! (JOBID)を使用するだけです。
SQL Server 2005 SP1 以降、$(ESCAPE_NONE(JOBID)) のようなマクロを使用する必要があります。問題ない。
しかし、例を試してみると:
DECLARE @name NVARCHAR(128)
select @name = name from msdb.dbo.sysjobs where job_id = $(ESCAPE_SQUOTE(JOBID))
PRINT @name
「ESCAPE_SQUOTE」付近の構文が正しくありません。(Microsoft SQL Server、エラー: 102)
さて、最初から:
PRINT N'$(ESCAPE_SQUOTE(JOBID))'
「N」は、(JOBID) の NVARCHAR への暗黙的な変換を行うと思います...わかりました
、(ジョビッド)。書籍「SQL Server 2008 Administration」(168/169 ページ) には、(JOBID) の使用例もあります。
declare @jobid binary(16)
SELECT @jobid =Convert(Uniqueidentifier,$(ESCAPE_NONE(JOBID)))
結果:
'(' 付近の構文が正しくありません。(Microsoft SQL Server、エラー: 102)
今、完全に混乱しています。どなたか、良いアドバイスや解決策を教えてください。あらゆる種類の助けをいただければ幸いです。
よろしくヘルムート