Usuário com melhor resposta
Instalacao do SQLExpress via Linha de comando com a porta 1433 habilitada

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=0No 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
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 BlockDECLARE
@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 OUTPUTPRINT '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 OUTPUTPRINT
'A porta nova é ' + @portaVocê 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
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.
-
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
-
-
-
-
-
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 BlockDECLARE
@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 OUTPUTPRINT '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 OUTPUTPRINT
'A porta nova é ' + @portaVocê 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
-
-