none
Dúvida - Script RRS feed

  • Pergunta

  • Galera, bom dia.

    Tenho que executar esse script no banco, tenho que fazer de uma maneira que caso aconteça algum erro, não fazer nada no banco. Como poderia estar fazendo?

    aqui só está uma parte do script.

    Obrigado.

    USE [dtbBiz]
    GO
    
    ALTER TABLE tblCorColaborador
    ADD 
    	Colaborador_Sexo char(1) null,
    	Colaborador_PIS varchar(11)null,
    	Colaborador_Endereco_ID  bigint null,	
    	Colaborador_Estabilidade_ID bigint null,
    	Colaborador_Nome_Mae varchar(100) null
    	
    GO	
    	
    ALTER TABLE tblCorCargo
    ADD CONSTRAINT fk_tblCorCargo
    FOREIGN KEY (Departamento_Codigo_ID)
    REFERENCES tblCorDepartamento(Departamento_Codigo)
    
    /****** Object:  Table [dbo].[tbladmPerfil]    Script Date: 12/04/2013 14:43:39 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[tbladmPerfil](
    	[IdPerfil] [int] IDENTITY(1,1) NOT NULL,
    	[NmPerfil] [varchar](100) NOT NULL,
    	[DsPerfil] [nvarchar](500) NULL,
    	[FlgAcessoAdministracao] [bit] NOT NULL,
    	[FlgAcessoAtendimento] [bit] NOT NULL,
    	[DtCadastro] [datetime] NOT NULL,
    	[IdUsuarioCadastro] [bigint] NOT NULL,
    	[DtCancelamento] [datetime] NULL,
    	[IdUsuarioCancelamento] [bigint] NULL,
    	[FlgAtivo] [bit] NOT NULL,
     CONSTRAINT [PK_tbladmPerfil] PRIMARY KEY CLUSTERED 
    (
    	[IdPerfil] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

    quinta-feira, 5 de dezembro de 2013 13:00

Todas as Respostas

  • Antes de começar cada operação você pode começar uma transação:

    BEGIN TRANSACTION
    
    --OPERAÇÃO
    
    IF @@ERROR = 0
       COMMIT TRANSACTION
    ELSE
       ROLLBACK TRANSACTION

    quinta-feira, 5 de dezembro de 2013 13:09
  • Antes de começar cada operação você pode começar uma transação:

    BEGIN TRANSACTION
    
    --OPERAÇÃO
    
    IF @@ERROR = 0
       COMMIT TRANSACTION
    ELSE
       ROLLBACK TRANSACTION

    Uma dúvida, eu posso deixar uma única transação , para todas operações?
    quinta-feira, 5 de dezembro de 2013 13:22
  • Se você quiser dar um rollback em todo o processo, deve deixar em uma unica transação.

    quinta-feira, 5 de dezembro de 2013 16:43
  • Deleted
    quinta-feira, 5 de dezembro de 2013 18:11
  • @José Diz:  Correçao:"Caso aconteça algum erro, pode-se desfazer a transação em curso, como explicado pelo Lennon Ferreira." :)

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 5 de dezembro de 2013 18:27
  • Deleted
    quinta-feira, 5 de dezembro de 2013 18:45
  • Galera, boa noite

    Fiz como citado acima, no meu script deu algum erro, que estou verificando aqui.

    Eu utilizando: 

    BEGIN TRANSACTION
    
    --OPERAÇÃO
    
    IF @@ERROR = 0
       COMMIT TRANSACTION
    ELSE
       ROLLBACK TRANSACTION

    não era para bloquear as criações de tabelas que eu tinha em meu script?

    Obrigado.

    quinta-feira, 5 de dezembro de 2013 21:10
  • Deleted
    quinta-feira, 5 de dezembro de 2013 21:48
  • Fiz como citado ..., no meu script deu algum erro, que estou verificando aqui.
    Eu utilizando: 

    BEGIN TRANSACTION
    
    --OPERAÇÃO
    
    IF @@ERROR = 0
       COMMIT TRANSACTION
    ELSE
       ROLLBACK TRANSACTION
    não era para bloquear as criações de tabelas que eu tinha em meu script?

    Felipe, se o script possui somente comandos de manutenção na estrutura do banco de dados (DDL - data definition language), então não cabe o uso de transação.


        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)


    José, bom dia.

    Isso, o script só tem comandos de manutenção na estrutura, é possível fazer de alguma maneira (caso de algum erro, nada executar). Estou gerando meu script no meu banco de teste, toda vez que o script da erro, tenho que restaurar meu banco, queria fazer esse tratamento do script, que em breve tenho que rodar no servidor de produção.

    Obrigado.

    sexta-feira, 6 de dezembro de 2013 11:47