Usuário com melhor resposta
Script funciona mas gera erro

Pergunta
-
Estou criando um script para alterar o owner de todos os jobs cujo o nome comecem com "Backup".
O script está realizando a mudança mas gera um erro no final e não sei o impacto dele.
Segue o script e o erro, gostaria de eliminar este erro.
CREATE TABLE #Job_Names
(
Job_Name SYSNAME NOT NULL
)INSERT INTO #Job_Names
SELECT name
FROM msdb..sysjobs
WHERE name like 'Backup%'
ORDER BY nameDECLARE @job_name SYSNAME
DECLARE altera_jobs CURSOR FOR
SELECT Job_Name
FROM #Job_NamesOPEN altera_jobs
FETCH NEXT FROM altera_jobs INTO @job_nameWHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('msdb.dbo.sp_update_job @job_name=' + @job_name + ',@owner_login_name="Dominio\fabiojr"')FETCH NEXT FROM altera_jobs INTO @job_name
END
CLOSE altera_jobs
DEALLOCATE altera_jobsDROP TABLE #Job_Names
RETURN
GO////////////////
Mensagem de erro:
(20 row(s) affected)
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ','.quinta-feira, 19 de outubro de 2006 13:43
Respostas
-
Marcelo,
O problema persistiu.
Analisando a forma que funciona a sp percebi o uso do apóstrofo no valor que é passando em @job_name, ficou assim:
Select @Command = 'msdb.dbo.sp_update_job @job_name=' + char(39) + @job_name + char(39) + ',@owner_login_name="Dominio\fabiojr"'
Desta forma funcionou.
Obs.: Deve ter uma maneira de passar o apóstrofo dentro de uma string mas não sei como, em vbscript o delimitador de string são as aspas e para utilizar aspas dentro de uma string se utiliza aspas duplas.
Obrigado pela atenção.
quinta-feira, 19 de outubro de 2006 15:47 -
tem sim e so usar assim
SET QUOTED_IDENTIFIER ON
Select "'" As Teste
--Server: Msg 207, Level 16, State 3, Line 4
--Invalid column name '''.SET QUOTED_IDENTIFIER OFF
Select "'" As TesteTeste
'(1 row(s) affected)
coloque dentro da proc o comando SET QUOTED_IDENTIFIER OFF
Abs;quinta-feira, 19 de outubro de 2006 16:00
Todas as Respostas
-
tente assim
CREATE TABLE #Job_Names
(
Job_Name SYSNAME NOT NULL
)INSERT INTO #Job_Names
SELECT name
FROM msdb..sysjobs
WHERE name like 'Backup%'
ORDER BY nameDECLARE @job_name Varchar(500)
DECLARE @Command Varchar(500)DECLARE altera_jobs CURSOR FOR
SELECT Job_Name
FROM #Job_NamesOPEN altera_jobs
FETCH NEXT FROM altera_jobs INTO @job_nameWHILE @@FETCH_STATUS = 0
BEGINSelect @Command = 'msdb.dbo.sp_update_job @job_name=' + @job_name + ',@owner_login_name="Dominio\fabiojr"'
Exec(@command)
FETCH NEXT FROM altera_jobs INTO @job_name
END
CLOSE altera_jobs
DEALLOCATE altera_jobsDROP TABLE #Job_Names
RETURN
GOAbs;
quinta-feira, 19 de outubro de 2006 14:29 -
Marcelo,
O problema persistiu.
Analisando a forma que funciona a sp percebi o uso do apóstrofo no valor que é passando em @job_name, ficou assim:
Select @Command = 'msdb.dbo.sp_update_job @job_name=' + char(39) + @job_name + char(39) + ',@owner_login_name="Dominio\fabiojr"'
Desta forma funcionou.
Obs.: Deve ter uma maneira de passar o apóstrofo dentro de uma string mas não sei como, em vbscript o delimitador de string são as aspas e para utilizar aspas dentro de uma string se utiliza aspas duplas.
Obrigado pela atenção.
quinta-feira, 19 de outubro de 2006 15:47 -
tem sim e so usar assim
SET QUOTED_IDENTIFIER ON
Select "'" As Teste
--Server: Msg 207, Level 16, State 3, Line 4
--Invalid column name '''.SET QUOTED_IDENTIFIER OFF
Select "'" As TesteTeste
'(1 row(s) affected)
coloque dentro da proc o comando SET QUOTED_IDENTIFIER OFF
Abs;quinta-feira, 19 de outubro de 2006 16:00