Brincando com projetos de banco de dados, o Visual Studio gerou um script de alteração com as seguintes linhas:
GO
SET ANSI_NULLS, ANSI_PADDING --etc.;
SET NUMERIC_ROUNDABORT OFF;
GO
:setvar DatabaseName "Foo"
:setvar DefaultFilePrefix "Foo"
:setvar DefaultDataPath ""
:setvar DefaultLogPath ""
GO
:on error exit
GO
:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
BEGIN
PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
SET NOEXEC ON;
END
GO
USE [$(DatabaseName)];
GO
CREATE NONCLUSTERED INDEX [SomeIndex]
ON [dbo].[SomeTable]([SomeColumn] ASC);
GO
Qual é o significado dos dois pontos no início das linhas? Esta pergunta do Stackoverflow diz que os dois pontos são para variáveis de ligação, mas o que os dois pontos :on error exit
fazem?
é o SQLCMD
O que você tem é um
sqlcmd
roteiro.O
sqlcmd
utilitário permite inserir instruções Transact-SQL, procedimentos do sistema e arquivos de script no prompt de comando.E o sqlcmd tem alguns comandos específicos do sqlcmd que começam com dois pontos .
Algumas informações gerais sobre o sqlcmd abaixo.
Você pode escrever instruções SQL que são executadas depois que você digita
GO
. No exemplo, primeiroAdventureWorks2012
seleciona-se o banco de dados e depoisSELECT
executa-se a.-i para incluir scripts
Porém, você também tem a possibilidade de executar um script preparado usando a opção -i , por exemplo:
-v para passar um valor
Você também pode criar variáveis de script com a notação $(nome) e passar um valor do prompt de comando usando a opção -v
Além do prompt de comando, o código incluindo variáveis de script pode ser executado no SQL Server Management Studio, selecionando
SQLCMD mode
em uma janela de consulta.:SETVAR
Neste ambiente, a maneira como você pode definir os valores das variáveis de script é usando o comando :SETVAR
: EM ERRO
O :NO ERRO [ SAIR | IGNORE] define a ação a ser executada quando ocorre um erro durante a execução do script ou do lote.
Ignorar
Quando a
IGNORE
opção é usada, o erro é ignorado e o lote ou script continua em execução. No entanto, a mensagem de erro é impressa.Saída
Quando a
EXIT
opção é usada, a execução é interrompida e existe.:On Error
é um Comando de Controle de Execução no sqlcmd.A postagem que você mencionou está se referindo ao Oracle, mas o script que você postou é para o utilitário sqlcmd do Sql Server ou o modo sqlcmd