none
Msg 207, Level 16, State 1, Invalid column name RRS feed

  • Discussão Geral

  • Boa tarde! Estou tentando fazer um envio de email através de informações retiradas de 4 tabelas usando o comando JOIN, ele consegue pegar as informações direitinho. Porem preciso enviar essas informações por email e acaba dando erro "Msg 207, Level 16, State 1, Invalid column name" nas colunas q selecionei para o envio do email. É possível esse erro devido a tantas junções de tabelas? Segue query:


    --Insere os dados dos chamados, das certificações e dos tecnicos na tabela [WinAutomation].[dbo].[Dell_Certificacao_Email]
    INSERT INTO [WinAutomation].[dbo].[Dell_Certificacao_Email](
       [Urgency]
          ,[Incident]
          ,[Company]
          ,[Product]
          ,[TEC]
          ,[Tecnicos]
          ,[CIDADE]
          ,[UF]
          ,[PERSONAL_ID]
          ,[ID2]
          ,[Certificacao]
          ,[DATA_INSERCAO])
    SELECT * FROM (
    SELECT A.[Urgency]
    ,A.[Incident]
    ,A.[Company]
    ,A.[Product]
    ,A.[TEC]
    ,B.[Tecnicos]
    ,B.[CIDADE]
    ,B.[UF]
    ,B.[PERSONAL_ID]
    ,D.[PERSONAL_ID] as [ID2]
    ,C.[Certificacao]
    ,GETDATE() as [DATA_INSERCAO]
    FROM (SELECT [Company],[Urgency],[Incident],[Product], '0555-' + [Branch] + '-' +[Territory] as [TEC]
    FROM [SRMS].[dbo].[Brazil_Open]
    WHERE [Nat_Acc] = 0044100162) A
    LEFT JOIN [WinAutomation].[dbo].[Dell_Certificacao] as C
    on A.[Product] = C.[Product]
    LEFT JOIN [WinAutomation].[dbo].[Dell_Tecnicos] as B
    on a.TEC = B.[FILIAL_TERRITORIO]
    LEFT JOIN [WinAutomation].[dbo].[Dell_Educate] as D
    on B.[PERSONAL_ID] = D.[PERSONAL_ID]
    and C.[Certificacao] like D.[Certificacao]
    WHERE TEC IN (SELECT [FILIAL_TERRITORIO] FROM [WinAutomation].[dbo].[Dell_Tecnicos])) as E
    WHERE [ID2] IS NULL AND [Product] IS NOT NULL AND [Certificacao] IS NOT NULL AND [Incident] NOT IN(
    SELECT [Incident] FROM [WinAutomation].[dbo].[Dell_Certificacao_Email]
    WHERE [DATA_INSERCAO] <GETDATE()+1 AND [DATA_INSERCAO]> GETDATE()-1)

    --Preenche como 'Não Informado' caso o campo [Company] esteja em branco
    UPDATE [WinAutomation].[dbo].[Dell_Certificacao_Email]
    SET [Company] = 'Não informado'
    WHERE [Company] is null

    --Armazena os dados dos emails
    INSERT INTO [WinAutomation].[dbo].[Send_Emails] ([Sender]
          ,[TO_list]
          ,[CC_list]
          ,[Subject]
          ,[body]
          ,[insert_date])
          
    --Realiza o envio do email 
      SELECT 'robo.DellCertificacoes@unisys.com'
      
      ,(SELECT [Emails]
        FROM [WinAutomation].[dbo].[Listas_Email]
    WHERE [Projeto] = 'Dell_Certificacoes')

     ,(SELECT [CC]
        FROM [WinAutomation].[dbo].[Listas_Email]
    WHERE [Projeto] = 'Dell_Certificacoes')
      
      ,[Company]+' - '+convert(nvarchar(8),[Incident])+' - '+[CIDADE]+' - '+[UF]
      
      ,'Olá:lin::lin:Verifiquei que o tecnico '+[Tecnicos]+' | '+[TEC]+' não possui a certificação '+[Certificacao]+' para atender o equipamento '+[Product]+' do chamado '+convert(nvarchar(8),[Incident])+'.:lin::lin:Favor verificar.:lin::lin:At,:lin:Analista Virtual'  
      
      ,GETDATE ()
      
    --Após o envio do email comunicando encerramento do chamado, efetua a alteração do estatus [Enviado] de tudo que seja diferente de 'E' para 'E'.
     UPDATE [WinAutomation].[dbo].[Dell_Certificacao_Email]
     SET [Enviado] = 'E'
     WHERE [Enviado] != 'E'
    sexta-feira, 13 de abril de 2018 17:10

Todas as Respostas

  • Boa tarde Cinthia, esse erro é apresentado quando alguma coluna presente no código não existe ou está sendo referenciada  de forma errada, devido ao fato de não termos a estrutura das tabelas envolvidas não podemos identificar se esta faltando algum campo no seu primeiro insert ou nos demais comandos. Uma parte do código me chamou atenção:

    --Armazena os dados dos emails INSERT INTO [WinAutomation].[dbo].[Send_Emails] ([Sender] ,[TO_list] ,[CC_list] ,[Subject] ,[body] ,[insert_date]) --Realiza o envio do email SELECT 'robo.DellCertificacoes@unisys.com' ,(SELECT [Emails] FROM [WinAutomation].[dbo].[Listas_Email] WHERE [Projeto] = 'Dell_Certificacoes') ,(SELECT [CC] FROM [WinAutomation].[dbo].[Listas_Email] WHERE [Projeto] = 'Dell_Certificacoes') ,[Company]+' - '+convert(nvarchar(8),[Incident])+' - '+[CIDADE]+' - '+[UF] ,'Olá:lin::lin:Verifiquei que o tecnico '+[Tecnicos]+' | '+[TEC]+' não possui a certificação '+[Certificacao]+' para atender o equipamento '+[Product]+' do chamado '+convert(nvarchar(8),[Incident])+'.:lin::lin:Favor verificar.:lin::lin:At,:lin:Analista Virtual' ,GETDATE ()

    -- parece que está faltando o from, pois tem os nomes dos campos mas não tem a tabela nas 2 penúltimas linhas do insert

    --talvez seja a tabela [Dell_Certificacao_Email] que deve aparecer no seu insert

    Neste insert parece que está faltando o "FROM", nas 2 penúltimas linhas aparecem nomes de colunas porém não consegui identificar o "FROM".

    Obrigado.

    sábado, 14 de abril de 2018 21:42
  • Olá, bom dia.

    Se possível revise seu código com as estruturas das tabelas. Se não achar nada de errado tente executar o código em "blocos" menores para identificar em qual declaração está o erro.

    Provavelmente a falta do FROM com a tabela como dito acima ou um erro de escrita.

    Abs


    Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)


    segunda-feira, 16 de abril de 2018 12:44