none
Instalacao do SQLExpress via Linha de comando com a porta 1433 habilitada RRS feed

  • Pergunta

  • Estou fazendo uma instalacao do sqlexpress atraves de linha de comando

     

    O meu setup.ini tem o seguinte conteudo

    [Options]
    ADDLOCAL=ALL
    SECURITYMODE=SQL
    SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS"
    SQLAUTOSTART=1
    DISABLENETWORKPROTOCOLS=0

     

    No sql standard/Developer/Enterprise o padrao ja é a 1433

     

    Estou fazendo a chamada assim

    c:\temp\setup.exe /qb SAPWD=33sa97 /settings c:\temp\setup.ini

     

    Instala tudo certinho, porem fica com a porta dinamica no TCP/IP e preciso que fique a padrao 1433.

     

    Alexandro Maule

    sexta-feira, 4 de janeiro de 2008 12:12

Respostas

  • Olá Alexandro,

     

    Não é abuso não. A demora foi só em uma forma de elaborar esse script. As definições de porta ficam guardadas em Registry então faz-se necessário elaborar algum script para alterar essas chaves. O problema é que se sua instalação não for Default, você terá que procurar as chaves corretas. A melhor forma de fazer esse script é via VBScript, mas como não sou perito (e nem tive muito tempo) fiz o script em TSQL.

     

    Code Block

    DECLARE @porta varchar(20)

    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @value=@porta OUTPUT

     

    PRINT 'A porta antiga era ' + @porta

     

    EXEC master..xp_regdeletevalue

    @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort'

     

    EXEC master..xp_regwrite

    @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @type='REG_SZ',

    @value='5346'

     

    DECLARE @porta varchar(20)

    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @value=@porta OUTPUT

    PRINT 'A porta nova é ' + @porta

     

     

     

    Você terá que rodar esse script para as seguintes chaves:

     

    'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP2'

    'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'

     

    Depois que as chaves forem alteradas, é necessário que o serviço seja reiniciado para que as mesmas façam efeito. Embora parece uma idéia interessante fazer em TSQL, esse procedimento pode ser complicado. O ideal mesmo era fazer isso via VBScript, pois, nesse caso as chaves seriam alteradas antes mesmo que o serviço fosse iniciado a primeira vez. Se o script em TSQL não lhe for útil, poste novamente. Tentarei elaborar o script em VBScript se for o caso.

     

    [ ]s,

     

    Gustavo

    sexta-feira, 4 de janeiro de 2008 23:57

Todas as Respostas

  • Alexandre,

     

    No SQL Server 2005 Express a porta padrão também é a 1433!!!

     

    Você já verificou os parâmetros de configuração do arquivo setup.exe, para identificar se existe algum que possa definir a portão.

     

    Mas obrigatório a instalação do SQL Server Express funciona da mesma forma.

     

    Instalando o SQL Server Express via linha de

    comando

    Para aqueles que estão acostumados a instalar o MSDE 2000 via linha de comando,

    verão que instalar o SQL Server Express via linha de comando é tão simples quanto

    instalar o MSDE. Inclusive, a sintaxe e os parâmetros de instalação são bem

    semelhantes.

    Antes de iniciar o processo de instalação do SQL Express via linha de comando, é

    preciso extrair os arquivos de instalação para um caminho temporário. Para extrair

    os arquivos de instalação, execute o pacote do SQL Express com a opção /X e

    informe o caminho onde os aquivos deverão ser extraídos.

    Exemplo: C:\SQLEXPR.EXE /X

    Depois de extraído os arquivos, a instalação do SQL Express via linha de comando

    pode ser realizada de duas formas bastante simples:

    1. Chamando o setup.exe e especificando os parâmetros desejados na própria

    linha de comando.

    SQL Server Express – Instalação e Configuração

     

    Exemplo:

    start /wait <caminhotemporario>\setup.exe /qb ADDLOCAL=ALL

    INSTANCENAME=SQLEXPRESS SECURITYMODE=SQL SAPWD=pass

    SQLCOLLATION="SQL_Latin1_General_CP1_CI_AI" SQLAUTOSTART=1

    DISABLENETWORKPROTOCOLS=0

    2. Criando um arquivo de configuração e especificando o mesmo na linha de

    comando

    Caso você não queira executar o setup especificando os parâmetros, uma alternativa

    é executá-lo informando um arquivo .ini, o qual deverá conter todos os parâmetros a

    serem utilizados durante a instalação.

    O arquivo .ini é um arquivo texto que pode ser criado usando o NotePad e deve ser

    salvo com a extensão .ini. A primeira linha do arquivo deve ser [Options], depois se

    devem especificar os parâmetros sendo um em cada linha. Depois de criado o

    arquivo .ini, execute o setup usando a opção /settings para informar o arquivo .ini

    O exemplo abaixo utiliza o arquivo setup.ini para executar o setup.exe e informar os

    parâmetros desejados.

    Exemplo:

    start /wait <caminhotemporario>setup.exe /qb SAPWD=pass /settings

    <caminhotemporario>\setup.ini

    -- conteúdo do arquivo setup.ini

    [Options]

    ADDLOCAL=ALL

    INSTANCENAME=SQLEXPRESS

    SECURITYMODE=SQL

    SQLCOLLATION="SQL_Latin1_General_CP1_CI_AI"

    SQLAUTOSTART=1

    DISABLENETWORKPROTOCOLS=0

    Nos exemplos acima, o parâmetro ADDLOCAL=ALL informa ao setup do SQL Express

    que devem ser instalados todos os seus componentes. INSTANCENAME indica o

    nome da instância, SECURITYMODE indica que o modo de autenticação a ser

    utilizado é o SQL Authentication, SQLCOLLATION informa o collation default a ser

    utilizado pelo SQL Express, SQLAUTOSTART informa ao setup para configurar o

    serviço do SQL Express para inicialização automática, SAPWD informa a senha para o

    usuário sa e o parâmetro DISABLENETWORKPROTOCOLS indica quais os protocolos

    deverão estar habilitados.

    É importante ficar atento ao valor informado no parâmetro

    DISABLENETWORKPROTOCOLS, o qual por default é 1. O valor 1 informa ao SQL

    SQL Server Express – Instalação e Configuração

     

    Express para desativar os protocolos TCP/IP e Named Pipes. Como conseqüência o

    SQL Express não aceitará conexões vindas de outras máquinas da rede. Os possíveis

    valores para o parâmetro podem ser.

    DISABLENETWORKPROTOCOLS = 0; Shared Memory= On, Named Pipe= On, TCP=

    On

    DISABLENETWORKPROTOCOLS = 1; Shared Memory= On, Named Pipe= Off (Local

    Only),TCP= Off

    DISABLENETWORKPROTOCOLS = 2; Shared Memory= On, Named Pipe= Off (Local

    Only), TCP= On

    Ao utilizar um dos dois métodos de instalação apresentados acima, as contas de

    serviço SQL Server Express e SQL Server Browser serão iniciadas com o usuário de

    sistema NT AUTHORITY\NetworkService. Para especificar uma conta de serviço

    diferente, acrescente os parâmetros abaixo:

    SQLACCOUNT=<domain\user>

    SQLPASSWORD=<domainuserpassowrd>

    SQLBROWSERACCOUNT=<domain\user>

    SQLBROWSERPASSWORD=<domainuserpassowrd>

    Para obter uma lista completa de todos os parâmetros que podem ser utilizados na

    instalação via linha de comando e seus respectivos significados, após extrair os

    arquivos do SQL Express para um caminho temporário, leia o arquivo template.ini.

    sexta-feira, 4 de janeiro de 2008 14:15
    Moderador
  • Olá Alexandro,

     

    Eu desconheço algum parâmetro para fazer isso e procurando em algumas comunidades parece que não existe. O que pode ser feito é rodar um script para realizar essa mudança. Bastaria trocar algumas chaves na Registry e reiniciar o serviço.

     

    [ ]s,

     

    Gustavo

     

    sexta-feira, 4 de janeiro de 2008 15:59
  •  

    Cara o defult e a 1433 mais se vc. tiver outro sql server intalado ele coloca como dinamico, vc. ja tem um sql server instalado na maquina ?

     

    Abs/;

    sexta-feira, 4 de janeiro de 2008 16:38
  • Entao, mais toda a instalacao que eu faço ele habilita as portas dinamicas.

     

    sexta-feira, 4 de janeiro de 2008 16:38
  • Nao, tenho instalado na rede

     

    sexta-feira, 4 de janeiro de 2008 16:39
  • Entao Gustavo, teria um exemplo deste script, se nao for abusar.

    sexta-feira, 4 de janeiro de 2008 16:41
  • Olá Alexandro,

     

    Não é abuso não. A demora foi só em uma forma de elaborar esse script. As definições de porta ficam guardadas em Registry então faz-se necessário elaborar algum script para alterar essas chaves. O problema é que se sua instalação não for Default, você terá que procurar as chaves corretas. A melhor forma de fazer esse script é via VBScript, mas como não sou perito (e nem tive muito tempo) fiz o script em TSQL.

     

    Code Block

    DECLARE @porta varchar(20)

    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @value=@porta OUTPUT

     

    PRINT 'A porta antiga era ' + @porta

     

    EXEC master..xp_regdeletevalue

    @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort'

     

    EXEC master..xp_regwrite

    @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @type='REG_SZ',

    @value='5346'

     

    DECLARE @porta varchar(20)

    EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',

    @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP1',

    @value_name='TcpPort',

    @value=@porta OUTPUT

    PRINT 'A porta nova é ' + @porta

     

     

     

    Você terá que rodar esse script para as seguintes chaves:

     

    'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IP2'

    'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'

     

    Depois que as chaves forem alteradas, é necessário que o serviço seja reiniciado para que as mesmas façam efeito. Embora parece uma idéia interessante fazer em TSQL, esse procedimento pode ser complicado. O ideal mesmo era fazer isso via VBScript, pois, nesse caso as chaves seriam alteradas antes mesmo que o serviço fosse iniciado a primeira vez. Se o script em TSQL não lhe for útil, poste novamente. Tentarei elaborar o script em VBScript se for o caso.

     

    [ ]s,

     

    Gustavo

    sexta-feira, 4 de janeiro de 2008 23:57
  • Obrigado Gustavo

     

    O seu post me dei uma nova ideia, vou testar e se funcionar eu coloco aqui para a comunidade.

     

    sábado, 5 de janeiro de 2008 11:50
  • Oi Alexandro,

     

    Se você conseguir resolver essa de uma forma mais prática que a minha com certeza vai resolver o problema de muitos outros...

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 7 de janeiro de 2008 13:40