locked
Script funciona mas gera erro RRS feed

  • 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 name

    DECLARE @job_name SYSNAME

    DECLARE altera_jobs CURSOR FOR
    SELECT Job_Name
    FROM #Job_Names

    OPEN altera_jobs
    FETCH NEXT FROM altera_jobs INTO @job_name

    WHILE @@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_jobs

    DROP 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 Teste

    Teste
    '

    (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 name

    DECLARE @job_name Varchar(500)
    DECLARE @Command Varchar(500)

    DECLARE altera_jobs CURSOR FOR
    SELECT Job_Name
    FROM #Job_Names

    OPEN altera_jobs
    FETCH NEXT FROM altera_jobs INTO @job_name

    WHILE @@FETCH_STATUS = 0
    BEGIN

     Select @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_jobs

    DROP TABLE #Job_Names

    RETURN
    GO

    Abs;

    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 Teste

    Teste
    '

    (1 row(s) affected)

     

    coloque dentro da proc o comando SET QUOTED_IDENTIFIER OFF

     


    Abs;

    quinta-feira, 19 de outubro de 2006 16:00