Usuário com melhor resposta
Qual é o impacto de "substituir" uma base (+ recente) ?

Pergunta
-
Qual é o impacto de "substituir" uma base ?
Estou implementando um esquema aqui (Sql Server 2005), terá de semana em semana fazer esse processo. Como sou novo em SQL Server não sei se o procedimento comentado abaixo, trará algum impacto.
Quero "substituir" uma base da produção por outra, com + dados recentes (é bom citar isso por que senão terá questionamentos).
É acho que é melhor renomear ela. Restaurar a outra, e depois eliminar a antiga.
Por exemplo, vou em Databases, seleciono a base em produção, e na opção renomear, escolho de contabilidade para contabilidadeOld (nome lógico). Só que o nome contabilidade.mdf continua o mesmo.
Restauro a outra Database com o nome lógico de contabilidade, porem o nome fisico nao pode ficar o mesmo contabilidade.mdf, então deixei contabilidade20090605.mdf. Deixar o nome físico assim, será uma boa pratica?
Pergunta: As query se baseia pelo nome logico então não terei problema ?
Pergunta: Como é o passo para aproveitar as storedProcedures e as permissoes dos usuarios todas as vezes que fizer isso.
Valew !sexta-feira, 5 de junho de 2009 18:23
Respostas
-
Boa Noite Anetao,
É possível fazer esse procedimento, mas no momento de substituir o banco é preciso que ele esteja sem nenhum acesso (exclusive mode). Você pode derrubar os usuários antes para garantir que nenhum acesso está sendo feito com as instruções abaixo:
ALTER DATABASE Banco SET READ_ONLY WITH ROLLBACK IMMEDIATE ALTER DATABASE Banco SET READ_WRITE WITH ROLLBACK IMMEDIATE
Posteriormente faça a restauração. Não há nenhum problema em ter nomes físicos diferentes (nem o nome lógico fará influência).
Para garantir que os logins e usuários estejam mapeados, você deve utilizar o comando ALTER USER ou a stored procedure sp_change_users_login
[ ]s,Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo eliminar linhas duplicadas e repetições no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!584.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 16 de janeiro de 2020 21:58
domingo, 7 de junho de 2009 02:43
Todas as Respostas
-
Será que dá certo renomear, por que veja o que ocorreu ...
TITLE: Microsoft SQL Server Management Studio
------------------------------
Unable to rename ODSx. (ObjectExplorer)
------------------------------
ADDITIONAL INFORMATION:
Rename failed for Database 'ODS'. (Microsoft.SqlServer.Smo)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Rename+Database&LinkId=20476
------------------------------
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=5030&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------sexta-feira, 5 de junho de 2009 18:49 -
aNetão,
Esta substituição não seria simplesmente restaurar um backup sobre este banco?
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBAsexta-feira, 5 de junho de 2009 19:48Moderador -
Tipo assim, é parecido com isso.
Entao, o backup sempre terá que ser do tipo full !!! (nao será necessario entrar nesse merito)
Ai, estava pensando em fazer isso renomear a base antiga, restaurar a nova com o mesmo nome ! Para qualquer coisa ter como voltar atras.
Pergunto, agora. Esse procedimento que já descrevi (em outro post acima) é possivel ou não ? Por que nao deu para renomear a base ?
Em outro banco que eu usava as vezes, é possivel fazer dessa forma descrita.sábado, 6 de junho de 2009 14:35 -
Boa Noite Anetao,
É possível fazer esse procedimento, mas no momento de substituir o banco é preciso que ele esteja sem nenhum acesso (exclusive mode). Você pode derrubar os usuários antes para garantir que nenhum acesso está sendo feito com as instruções abaixo:
ALTER DATABASE Banco SET READ_ONLY WITH ROLLBACK IMMEDIATE ALTER DATABASE Banco SET READ_WRITE WITH ROLLBACK IMMEDIATE
Posteriormente faça a restauração. Não há nenhum problema em ter nomes físicos diferentes (nem o nome lógico fará influência).
Para garantir que os logins e usuários estejam mapeados, você deve utilizar o comando ALTER USER ou a stored procedure sp_change_users_login
[ ]s,Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo eliminar linhas duplicadas e repetições no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!584.entry
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 16 de janeiro de 2020 21:58
domingo, 7 de junho de 2009 02:43 -
Gustavo,
então, como não sabia dessas instruções que vc passou, fiz no desenvolvimento.
Executei:
ALTER DATABASE ODS SET READ_ONLY WITH ROLLBACK IMMEDIATE
Retornou:
Nonqualified transactions are being rolled back. Estimated rollback completion: 100%.
Tentei consultar vi, e comprovei que ele corta as conexoes. Depois:
ALTER DATABASE ODS SET READ_WRITE WITH ROLLBACK IMMEDIATE
Voltei a consultar normalmente.
Voltei com a instrução:
ALTER DATABASE ODS SET READ_ONLY WITH ROLLBACK IMMEDIATE
Ai, foi renomear a base (ODS20090615). Veja, ...
TITLE: Microsoft SQL Server Management Studio
------------------------------
Unable to rename ODS20090615. (ObjectExplorer)
------------------------------
ADDITIONAL INFORMATION:
Rename failed for Database 'ODS'. (Microsoft.SqlServer.Smo)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Rename+Database&LinkId=20476
------------------------------
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
To change the NAME, the database must be in state in which a checkpoint can be executed. (Microsoft SQL Server, Error: 902)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=902&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
Quero renomear, para qualquer ter a base antiga, ainda!
E dps, ia fazer uma restauração Full.
Se eu estiver respondendo a sua pergunta, e a mesma tiver utilidade. Vote com útil. Se for minha dúvida, e você me ajudar na solução, terei o maior prazer em votar como útil. Esse é o espírito do Forum MSDN !!! Valew !segunda-feira, 15 de junho de 2009 15:26