none
Erro ao tentar fazer shrink e até mesmo ao tentar diminuir o size do banco de dados RRS feed

  • Pergunta

  • Pessoal

         Estou com um banco de dados, onde estou recebendo em várias situações de ajuste no banco de dados a seguinte mensagem  ( Erro grave no comando atual. Os resultados, se houver algum, deverão ser descartados. (.Net SqlClient Data Provider) )

        Onde posso considerar o mais grave  que quando estou tentando fazer até um shrink não está dando certo.

        Neste caso assim o que seria mais recomendável fazer ?

    
    ===================================
    
    Shrink failed for DataFile 'bd_catraca_2016'.  (Microsoft.SqlServer.Smo)
    
    ------------------------------
    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=12.0.5000.0+((SQL14_PCU_main).160617-1804)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Shrink+DataFile&LinkId=20476
    
    ------------------------------
    Program Location:
    
       at Microsoft.SqlServer.Management.Smo.DatabaseFile.Shrink(Int32 newSizeInMB, ShrinkMethod shrinkType)
       at Microsoft.SqlServer.Management.SqlManagerUI.CreateDatabaseData.DatabaseFilePrototype.CreateOrAlterDataFile(Database db)
       at Microsoft.SqlServer.Management.SqlManagerUI.CreateDatabaseData.DatabaseFilePrototype.ApplyChanges(Database db)
       at Microsoft.SqlServer.Management.SqlManagerUI.CreateDatabaseData.DatabasePrototype.ApplyChanges(Control marshallingControl)
       at Microsoft.SqlServer.Management.SqlManagerUI.DBPropSheet.DoPreProcessExecution(RunType runType, ExecutionMode& executionResult)
       at Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.DoPreProcessExecutionAndRunViews(RunType runType)
       at Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.ExecuteForSql(PreProcessExecutionInfo executionInfo, ExecutionMode& executionResult)
       at Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.Microsoft.SqlServer.Management.SqlMgmt.IExecutionAwareSqlControlCollection.PreProcessExecution(PreProcessExecutionInfo executionInfo, ExecutionMode& executionResult)
       at Microsoft.SqlServer.Management.SqlMgmt.ViewSwitcherControlsManager.RunNow(RunType runType, Object sender)
    
    ===================================
    
    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
    
    ------------------------------
    Program Location:
    
       at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
       at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType, Boolean retry)
       at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries, Boolean retry)
       at Microsoft.SqlServer.Management.Smo.DatabaseFile.Shrink(Int32 newSizeInMB, ShrinkMethod shrinkType)
    
    ===================================
    
    Erro grave no comando atual. Os resultados, se houver algum, deverão ser descartados. (.Net SqlClient Data Provider)
    
    ------------------------------
    For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=12.00.5000&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476
    
    ------------------------------
    Server Name: BD_SERVER_CAT\MANUTENCAO
    Error Number: 0
    Severity: 11
    State: 0
    
    
    ------------------------------
    Program Location:
    
       at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
       at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
    
    

    sexta-feira, 13 de dezembro de 2019 15:47

Respostas

  • Neibala,

    Estes erros estão sendo apresentados em qual interface gráfica?

    O ShrinkDatabase foi processado diretamente no SQL Server Management Studio?

    Poderia nos compartilhar o comando que você utilizou?

    Veja alguns exemplos de como podemos utilizar os comandos ShrinkFile e ShrinkDatabase:

    --Liberando 10% do espaço final do arquivo de dados --
    DBCC ShrinkDatabase('Cipa',10)
    
    --Diminuindo o Tamanho do Banco e liberando espaços existentes --
    DBCC ShrinkDatabase('Cipa',TruncateOnly)
    
    --Diminuindo o Tamanho do Arquivo de Banco para 1 MB --
    DBCC ShrinkFile('Cipa_Data',1)
    
    --Diminuindo o Tamanho do Arquivo de Banco e liberando espaços existentes --
    DBCC ShrinkFile('Cipa_Data',TruncateOnly)
    
    --Diminuindo o Tamanho do Arquivo de Log para 1 MB --
    DBCC ShrinkFile('Cipa_LOG',1)
    
    --Diminuindo o Tamanho do Arquivo de Log e liberando espaços existentes --
    DBCC ShrinkFile('Cipa_LOG',TruncateOnly)
    
    


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    sexta-feira, 13 de dezembro de 2019 17:50
  • Deleted
    • Marcado como Resposta neibala quarta-feira, 18 de dezembro de 2019 13:22
    sábado, 14 de dezembro de 2019 10:36
  • Neibala,

    O próprio SQL Server Management Studio tem a opção de gerar relatórios padrões contendo informações sobre os backup realizados para este banco de dados.

    Basta clicar com o botão da direita no banco de dados, escolher a opção Task e depois Reports.

    No exemplo abaixo, extraído do respectivo link: https://www.mssqltips.com/sqlservertip/1601/script-to-retrieve-sql-server-database-backup-history-and-no-backups/

    Você vai obter informações sobre os últimos backups realizados para cada banco de dados existentes na sua instância ou servidor.

    ------------------------------------------------------------------------------------------- 
    --Most Recent Database Backup for Each Database - Detailed 
    ------------------------------------------------------------------------------------------- 
    SELECT  
       A.[Server],  
       A.last_db_backup_date,  
       B.backup_start_date,  
       B.expiration_date, 
       B.backup_size,  
       B.logical_device_name,  
       B.physical_device_name,   
       B.backupset_name, 
       B.description 
    FROM 
       ( 
       SELECT   
           CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
           msdb.dbo.backupset.database_name,  
           MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 
       FROM    msdb.dbo.backupmediafamily  
           INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id  
       WHERE   msdb..backupset.type = 'D' 
       GROUP BY 
           msdb.dbo.backupset.database_name  
       ) AS A 
        
       LEFT JOIN  
    
       ( 
       SELECT   
       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
       msdb.dbo.backupset.database_name,  
       msdb.dbo.backupset.backup_start_date,  
       msdb.dbo.backupset.backup_finish_date, 
       msdb.dbo.backupset.expiration_date, 
       msdb.dbo.backupset.backup_size,  
       msdb.dbo.backupmediafamily.logical_device_name,  
       msdb.dbo.backupmediafamily.physical_device_name,   
       msdb.dbo.backupset.name AS backupset_name, 
       msdb.dbo.backupset.description 
    FROM   msdb.dbo.backupmediafamily  
       INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id  
    WHERE  msdb..backupset.type = 'D' 
       ) AS B 
       ON A.[server] = B.[server] AND A.[database_name] = B.[database_name] AND A.[last_db_backup_date] = B.[backup_finish_date] 
    ORDER BY  
       A.database_name 


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    domingo, 15 de dezembro de 2019 21:25

Todas as Respostas

  • Neibala,

    Estes erros estão sendo apresentados em qual interface gráfica?

    O ShrinkDatabase foi processado diretamente no SQL Server Management Studio?

    Poderia nos compartilhar o comando que você utilizou?

    Veja alguns exemplos de como podemos utilizar os comandos ShrinkFile e ShrinkDatabase:

    --Liberando 10% do espaço final do arquivo de dados --
    DBCC ShrinkDatabase('Cipa',10)
    
    --Diminuindo o Tamanho do Banco e liberando espaços existentes --
    DBCC ShrinkDatabase('Cipa',TruncateOnly)
    
    --Diminuindo o Tamanho do Arquivo de Banco para 1 MB --
    DBCC ShrinkFile('Cipa_Data',1)
    
    --Diminuindo o Tamanho do Arquivo de Banco e liberando espaços existentes --
    DBCC ShrinkFile('Cipa_Data',TruncateOnly)
    
    --Diminuindo o Tamanho do Arquivo de Log para 1 MB --
    DBCC ShrinkFile('Cipa_LOG',1)
    
    --Diminuindo o Tamanho do Arquivo de Log e liberando espaços existentes --
    DBCC ShrinkFile('Cipa_LOG',TruncateOnly)
    
    


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    sexta-feira, 13 de dezembro de 2019 17:50
  •    Junior Galvão

          

          Segue retorno abaixo :

        

    Estes erros estão sendo apresentados em qual interface gráfica?

    Resposta : (Dentro do  SQL Server Management Studio )

    O ShrinkDatabase foi processado diretamente no SQL Server Management Studio?

    Resposta : Executei tanto pelo SQL Server Management Studio com por Query isto dentro do SQL Server Management Studio.

    Poderia nos compartilhar o comando que você utilizou?

    Resposta :  Executei de diversas formas e tamanhos e não deu certo e verificando as formar que você enviou eu executei também.

    Veja alguns exemplos de como podemos utilizar os comandos ShrinkFile e ShrinkDatabase:

    Resposta : As formas que você tinha enviado tinha testado todas veja outras formas.

    DBCC SHRINKFILE (N'bd_catraca_2016_log',1024,TRUNCATEONLY)
    go

    DBCC SHRINKFILE (N'bd_catraca_2016' ,1024,TRUNCATEONLY)
    GO

    dbcc SHRINKDATABASE (N'bd_catraca_2016',512,TRUNCATEONLY)
    go

    E tendo qualquer outra dúvida ou sugestão agradeço toda a sua atenção neste assunto.

    sexta-feira, 13 de dezembro de 2019 21:14
  • Neibala,

    Se pegarmos este trecho, não existe nenhum erro grave sendo apresentado:

    Server Name: BD_SERVER_CAT\MANUTENCAO
    Error Number: 0
    Severity: 11               
    State: 0

    Agora aqui Shrink failed for DataFile esta dizendo que o Shrink falhou para o DataFile, mas não apresenta mais nada.....    

    Quantos arquivos de dados este banco possui?

    Você deixou o banco de dados em Single_user?

    Você alterou o recovery model para simple antes de realizar os Shrinks?

    Sinceramente estou surpreso do SSMS estar apresentando erro desta forma, não é normal ele estourar erros fazendo referência a biblioteca .Net.

    Qual é a versão do SSMS? Você esta utilizando o SQL Server 2014, estou certo?

    Posso estar falando uma besteira, mas me parece que o erro esta no SSMS!!!!


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 13 de dezembro de 2019 21:49
  • Deleted
    sexta-feira, 13 de dezembro de 2019 22:01
  • Deleted
    • Marcado como Resposta neibala quarta-feira, 18 de dezembro de 2019 13:22
    sábado, 14 de dezembro de 2019 10:36
  •   Junior Galvão / José Diz

        No momento estou vendo 2 casos que não estou entendendo claramente o que pode estar acontecendo.

    1) Se pegarmos este trecho, não existe nenhum erro grave sendo apresentado:

    Server Name: BD_SERVER_CAT\MANUTENCAO
    Error Number: 0
    Severity: 11               
    State: 

    Respota : Não é muito estranho o que pode estar acontecendo, mais vendo as respostas abaixo, de repente pode ficar mais claro o que pode estar acontecendo.

    2) Agora aqui Shrink failed for DataFile esta dizendo que o Shrink falhou para o DataFile, mas não apresenta mais nada.....    

    Resposta : As que mandei já é todas as informações que apareceu na tela.

    3) Quantos arquivos de dados este banco possui?

    Resposta : Como estou vendo 2 casos em Servidores diferente nos 2 casos são apenas 2 arquivos.

    3.1) Referente ao banco de dados bd_catraca_2016 o meu problema está relacionado ao arquivo .mdf.

    3.2) Referente ao banco de dados tempdb em um outro Servidor também está ligado ao arquivo .mdf.

    4)Você deixou o banco de dados em Single_user?

    Resposta : E cheguei a colocar o banco de dados (  bd_catraca_2016 ) para verificar se consegui dar um check no banco de dado, mais também não tive sucesso e depois voltei ao normal.

    5)Você alterou o recovery model para simple antes de realizar os Shrinks?

    Resposta : E só trabalhei no simple, você acha se eu alterar para  recovery model, eu conseguiria alterar o tamanho de forma mais rápida ou com mais eficiência e depois voltaria para simple.

    6) Sinceramente estou surpreso do SSMS estar apresentando erro desta forma, não é normal ele estourar erros fazendo referência a biblioteca .Net.

    Resposta : Eu então nem si fala na questão do erro e o pior que de momento outros banco de dados está aparentemente funcionando, utilizando o mesmo SSMS.

    7) Qual é a versão do SSMS? Você esta utilizando o SQL Server 2014, estou certo?

    Resposta : Segue abaixo:

    Microsoft SQL Server Management Studio    12.0.5000.0
    Microsoft Analysis Services Client Tools  12.0.5000.0
    Microsoft Data Access Components (MDAC)    6.3.9600.17415
    Microsoft MSXML                            3.0 6.0 
    Microsoft Internet Explorer                9.11.9600.19507
    Microsoft .NET Framework                   4.0.30319.42000
    Operating System                           6.3.9600

    E na questão do SQL Server 2014 sp2

    8) Posso estar falando uma besteira, mas me parece que o erro esta no SSMS!!!!

    Resposta : Eu de momento acharia  que o problema está relacionado a outra situação que de momento não está tão clara para mim.

     E neste caso veja o problema de outra maneira.

    8.1) Qual seria a maneira de realizar a alteração no tamanho do banco de dados mdf (  bd_catraca_2016 ), sabendo-se que o tamanho dele no momento seria de 5terabytes, sendo que queria deixar com o tamanho de 3terabytes, pois ele está ocupando  no momento 2.9 terabytes.

    8.2) Já no caso do tempdb ele está com 120gb, sendo que queria deixar com 55gb, pois ele está ocupando no momento 2gb.

    9) Foi realizado backup de log antes de tentar truncar o arquivo de log? Ou então o modelo de recuperação foi alterado para SIMPLE antes de tentar truncar o arquivo de log? Esses são pré-requisitos para realizar o truncamento de log de transações.

    Resposta : Eu pelo mesmo sempre trabalhei com SIMPLE, teria como eu saber se pode ser algo relacionado ao log, mesmo que o arquivo de log esteja bem pequeno e o meu problema está relacionado com o arquivo .mdf, neste caso você me recomendaria algo que posso checar ou verificar se anteriormente não foi feito algo neste sentido e que no momento não está tão claro para mim ?

    domingo, 15 de dezembro de 2019 03:08
  • Neibala,

    O próprio SQL Server Management Studio tem a opção de gerar relatórios padrões contendo informações sobre os backup realizados para este banco de dados.

    Basta clicar com o botão da direita no banco de dados, escolher a opção Task e depois Reports.

    No exemplo abaixo, extraído do respectivo link: https://www.mssqltips.com/sqlservertip/1601/script-to-retrieve-sql-server-database-backup-history-and-no-backups/

    Você vai obter informações sobre os últimos backups realizados para cada banco de dados existentes na sua instância ou servidor.

    ------------------------------------------------------------------------------------------- 
    --Most Recent Database Backup for Each Database - Detailed 
    ------------------------------------------------------------------------------------------- 
    SELECT  
       A.[Server],  
       A.last_db_backup_date,  
       B.backup_start_date,  
       B.expiration_date, 
       B.backup_size,  
       B.logical_device_name,  
       B.physical_device_name,   
       B.backupset_name, 
       B.description 
    FROM 
       ( 
       SELECT   
           CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
           msdb.dbo.backupset.database_name,  
           MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 
       FROM    msdb.dbo.backupmediafamily  
           INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id  
       WHERE   msdb..backupset.type = 'D' 
       GROUP BY 
           msdb.dbo.backupset.database_name  
       ) AS A 
        
       LEFT JOIN  
    
       ( 
       SELECT   
       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
       msdb.dbo.backupset.database_name,  
       msdb.dbo.backupset.backup_start_date,  
       msdb.dbo.backupset.backup_finish_date, 
       msdb.dbo.backupset.expiration_date, 
       msdb.dbo.backupset.backup_size,  
       msdb.dbo.backupmediafamily.logical_device_name,  
       msdb.dbo.backupmediafamily.physical_device_name,   
       msdb.dbo.backupset.name AS backupset_name, 
       msdb.dbo.backupset.description 
    FROM   msdb.dbo.backupmediafamily  
       INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id  
    WHERE  msdb..backupset.type = 'D' 
       ) AS B 
       ON A.[server] = B.[server] AND A.[database_name] = B.[database_name] AND A.[last_db_backup_date] = B.[backup_finish_date] 
    ORDER BY  
       A.database_name 


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    domingo, 15 de dezembro de 2019 21:25
  •   Junior Galvão / José Diz

         Obrigado pelas informações e estou dando uma revisada em tudo aqui.

    quarta-feira, 18 de dezembro de 2019 13:21