O SSIS tem uma função de banco de dados de cópia, então você teria que executar seu T-SQL via SSIS, e então você poderia ter um banco de dados de cópia como um passo nesse processo.
Eu gostaria de encontrar uma maneira baseada em script T-SQL para copiar meu banco de dados "PROD" (que é somente leitura e consiste em vários grupos de arquivos) para um banco de dados "EDIT" de leitura / gravação, que eu posso usar e editar dados em.
Eu sei sobre o Assistente de Cópia de Banco de Dados e estou usando-o agora - no entanto, prefiro automatizar isso para que um único script possa restaurar o banco de dados PROD a partir de um backup e copiá-lo para o banco de dados EDIT.
Parece que não há nenhum comando "COPY DATABASE" no T-SQL, nem posso encontrar outra maneira de fazer isso - a não ser restaurar o backup duas vezes. Mesmo? Não há melhor maneira de fazer isso?
O que eu gostaria de fazer é isto:
De preferência, tudo em um script T-SQL que eu possa executar a partir do SSMS e / ou sqlcmd.
O sistema é o SQL Server 2005 (de onde vem o backup) e o SQL Server 2008 (para o qual eu restauro).
O desafio está por aí - quem vai pegá-lo? : -)
Marc
O Assistente de Publicação do SQL Server pode ser automatizado com argumentos de linha de comando.
The following command will script the FooDB database from the default instance on a machine named MYSERVER using SQL Server authentication with the username "Alice" and the password "7h92-v6k3" to the file C:\FooDB.sql:
sqlpubwiz script -d FooDB -S MYSERVER -U Alice -P 7h92-v6k3 C:\FooDB.sql
Portanto, depois de ter esse script, você poderá executá-lo na outra instância do banco de dados usando SQLCMD .
sqlcmd -S MYSERVER -U Alice -P 7h92-v6k3 -i C:\FooDB.sql -o
Se o login que está executando o script tiver direitos sysadmin, você poderá fazer isso:
Se você puder usar o SQLCMD ou o modo SQLCMD do Management Studio para executar o script, também poderá tirar proveito dos SQLCMDs !! sintaxe para executar um comando do sistema operacional para copiar os arquivos.
Em qualquer caso, no entanto, isso (e o assistente de banco de dados de cópia, para esse assunto) envolve colocar o banco de dados PROD offline para fazer a cópia. Se isso não for uma opção, várias restaurações podem ser sua única opção.
Isso pode ajudar: link
Script out your entire database including SQL Insert statements for importing data into the database.
Isso pode ser útil:
Muito mais rápido e simples para fazer um backup / restauração:
SqlCmd -E -S localhost -Q "BACKUP DATABASE mydb TO DISK='c:\temp\mydb.bak'"
REM Make Sure connections are closed
SqlCmd -E -S localhost -Q "ALTER DATABASE PIDataCopy SET SINGLE_USER WITH ROLLBACK AFTER 60"
SqlCmd -E -S localhost -Q "RESTORE DATABASE PIDataCopy FROM DISK='c:\temp\mydb.bak WITH MOVE 'mydb_Data' TO 'C:\SQLData\PIDataCopy_Data', MOVE 'mydb_Log' TO 'C:\SQLData\PIDataCopy_Log', RECOVERY,REPLACE"
SqlCmd -E -S localhost -Q "ALTER DATABASE PIDataCopy SET MULTI_USER"
Tags restore sql-server