Um dos desafios operacionais que surgem quando desenvolvemos e distribuímos aplicações DataFlex com base de dados do SQL Server é mover dados entre diferentes versões ou configurações do servidor de banco de dados da Microsoft , muitas vezes enquanto a base de dados está rodando em ambiente de produção. "Scripting" é uma técnica que pode ser utilizada para superar este desafio.
Scripting é um processo que gera um arquivo texto de script utilizando a linguagem Transact-SQL (a versão Microsoft Server do SQL), que pode ser visto e editado com o SQL Server Management Studio ou outro editor de texto qualquer e importado em qualquer instância do SQL Server. O arquivo de texto gerado pode incluir todas as partes de uma base de dados, o schema (estrutura do banco de dados) ou apenas os seus dados.
Nós veremos como utilizar o script abaixo. Aqui está um resumo do que esse script faz e alguns exemplos de situações onde eles podem ser utilizados:
Agora que já temos um pouco de conhecimento sobre os usos do Scripting, vamos olhar como ele é feito.
Microsoft SQL Server é o assunto deste blog. A Data Access Worldwide recomenda a instalação e uso do SQL Server Management Studio (SSMS) da Microsoft com o SQL Server, pelo menos no seu PC de desenvolvimento. É uma ótima ferramenta visual, gratuita, que funciona com todas as versões/edições do Microsoft SQL Server, incluindo a edição Express.
Com o SQL Server Managament Studio, você tem uma série de opções de Scripting que podem ser selecionadas através dos seguintes passos:
Se você deseja visualizar ou editar o arquivo de script, eu recomendo o uso do Management Studio, pois ele dá um controle de contexto através de cores e nele você também pode testar qualquer script (seja cuidadoso para não apagar ou sobrescrever dados que você deseja preservar).
Você deve ter notado que o script contém o caminho completo para os arquivos da base de dados:
CREATE DATABASE [Chinook]
CONTAINMENT = NONE
ON PRIMARY
( NAME = NChinook, FILENAME = NC:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS16\MSSQL\DATA\Chinook.mdf , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON
( NAME = NChinook_log, FILENAME = NC:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS16\MSSQL\DATA\Chinook_log.ldf , SIZE = 73728KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
GO
Embora o Transact-SQL suporte a alteração disto, o assistente que gera o script não o faz, portanto você pode alterar o script, caso o caminho seja diferente no ambiente onde você o executará.
Uma pequena alteração é substituir o script acima por:
CREATE DATABASE [Chinook]
GO
Isto irá gerar a base de dados na instância do SQL Server onde o script for executado, utilizando todas as configurações padrões daquela instância, coisa que você provavelmente quer manter.
Você pode modificar alguns dos passos, conforme necessário. Alguns exemplos:
Chinook é uma base de dados de testes bastante conhecida e disponível para download.
As coisas que você pode fazer no SQL Server com as ferramentas fornecidas e Transact-SQL são das mais diversas e podem ser também bastante complexas. Esta é uma forma simples e eficiente para possibilitar que você transfira ou mesmo faça um backup de base de dados SQL.
Há limitações na técnica de Scripting. Por exemplo, ela pode não funcionar em base de dados muito grandes.
Mike Steffano e Sean Bamforth do Austin Programmers Group precisaram copiar uma base de dados de 5 GB do SQL Server 2016 para SQL Server 2012. Eles utilizaram o assistente de Scripting no SSMS, porém nem mesmo a versão 64-bits do SQL Server Management Studio foi capaz de carregar completamente o arquivo de script ou importar os dados no SQL Server de destino utilizando ferramentas de linha de comando. Após a tentativa de diversas soluções, incluindo ferramentas de terceiros, a solução foi gerar scripts de uma tabela por vez.
Assim como em muitas técnicas e ferramentas, nem todas as soluções funcionam em todos os cenários. Existem muita técnicas e ferramentas para trabalhar com dados SQL, tais como backup e restore, e replicação, etc.
Para as situações típicas de desenvolvimento e testes, Scripting é uma ferramenta excelente e flexível para você manter no seu cinto de utilidades.