COMO CONFIGURAR A PORTA DO SQL EXPRESS VIA CÓDIGO
Bom dia pessoal.
Teria como configurar a porta via código, sem ter que entrar no sql express configuration manager?
Digo via programação?
Abraços!
Teria como configurar a porta via código, sem ter que entrar no sql express configuration manager?
Digo via programação?
Abraços!
KELVINBETHO,
O que você quer fazer é uma [Ô]Connection String[Ô]?!?
https://www.connectionstrings.com/
Ou seria ...
https://social.msdn.microsoft.com/Forums/pt-BR/ff4c904d-a5ce-4fa3-a6e3-31bfe44cc9d4/acessar-sql-server-express-via-ddncombr-em-c?forum=vscsharppt
[][ô]s,
Tuinusat.
O que você quer fazer é uma [Ô]Connection String[Ô]?!?
https://www.connectionstrings.com/
Ou seria ...
https://social.msdn.microsoft.com/Forums/pt-BR/ff4c904d-a5ce-4fa3-a6e3-31bfe44cc9d4/acessar-sql-server-express-via-ddncombr-em-c?forum=vscsharppt
@[Ô]Data Source=meupc\SQLEXPRESS, 1433;Initial Catalog=meuBanco;User Id=usuario;Password=xxxxxxxxxxxxx;[Ô];
[][ô]s,
Tuinusat.
Boa tarde TUNUSAT, não, a string eu tenho. o que eu quero é uma rotina (Não sei se é possÃvel) para configurar a porta do Slq Express, aquela mesma configuração que a gente faz dentro do configuration manager em IPConfig. Só que eu queria fazer isso dentro do sistema, dentro do meu projeto. Por que tive problemas com o usuario master e não conectava nem a pau, até troquei rotinas de conexão e tudo mais, até descobrir que era a bendita da porta que estava em branco. Fui lá no configuration Manager e adicionei a porta 1433 e tudo deu certo., mas eu queria uma rotina que fizesse isso sem ter que entrar no configuration manager do SQLExpress.
Olá, fiz algo parecido um tempo atrás.
Vai precisar usar a dll SMO do SQL Server.
Especificamente, o namespace Microsoft.SqlServer.Management.Smo.Wmi
Pesquise sobre as classes ManagedComputer e ServerProtocol.
Se tiver dificuldade, me dá um toque que bolo um exemplo.
Abraços!
Vai precisar usar a dll SMO do SQL Server.
Especificamente, o namespace Microsoft.SqlServer.Management.Smo.Wmi
Pesquise sobre as classes ManagedComputer e ServerProtocol.
Se tiver dificuldade, me dá um toque que bolo um exemplo.
Abraços!
Amigo... eu fiz essa função que permite liberar porta no firewall do Windows
Ela está em Vb.Net
Com alguns ajustes vc escreve ela em C
Public Function CreatePort(Nome As String, NumPort As Integer, Optional Scopo As NET_FW_SCOPE_ = NET_FW_SCOPE_.NET_FW_SCOPE_ALL) As Boolean
Try
If String.IsNullOrEmpty(Nome) Then Throw New Exception([Ô]Não foi informado um Nome para a porta...[Ô])
If NumPort = 0 Then Throw New Exception([Ô]Falta informar o número da porta a ser craida...[Ô])
Dim Ports As INetFwOpenPorts = Nothing
Dim NetFwMgrType As Type = Type.GetTypeFromProgID([Ô]HNetCfg.FwMgr[Ô], False)
Dim mgr As INetFwMgr = DirectCast(Activator.CreateInstance(NetFwMgrType), INetFwMgr)
Ports = DirectCast(mgr.LocalPolicy.CurrentProfile.GloballyOpenPorts, INetFwOpenPorts)
Dim Tipo As Type = Type.GetTypeFromProgID([Ô]HNetCfg.FWOpenPort[Ô])
Dim Port As INetFwOpenPort = DirectCast(Activator.CreateInstance(Tipo), INetFwOpenPort)
Port.Name = Nome
Port.Port = NumPort
Port.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL
Port.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP [ô]protocol;
Port.Enabled = True
Port.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY
Port.RemoteAddresses = [Ô]*[Ô]
Ports.Add(Port)
Return True
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Firewall do windows[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
Ela está em Vb.Net
Com alguns ajustes vc escreve ela em C
Public Function CreatePort(Nome As String, NumPort As Integer, Optional Scopo As NET_FW_SCOPE_ = NET_FW_SCOPE_.NET_FW_SCOPE_ALL) As Boolean
Try
If String.IsNullOrEmpty(Nome) Then Throw New Exception([Ô]Não foi informado um Nome para a porta...[Ô])
If NumPort = 0 Then Throw New Exception([Ô]Falta informar o número da porta a ser craida...[Ô])
Dim Ports As INetFwOpenPorts = Nothing
Dim NetFwMgrType As Type = Type.GetTypeFromProgID([Ô]HNetCfg.FwMgr[Ô], False)
Dim mgr As INetFwMgr = DirectCast(Activator.CreateInstance(NetFwMgrType), INetFwMgr)
Ports = DirectCast(mgr.LocalPolicy.CurrentProfile.GloballyOpenPorts, INetFwOpenPorts)
Dim Tipo As Type = Type.GetTypeFromProgID([Ô]HNetCfg.FWOpenPort[Ô])
Dim Port As INetFwOpenPort = DirectCast(Activator.CreateInstance(Tipo), INetFwOpenPort)
Port.Name = Nome
Port.Port = NumPort
Port.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL
Port.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP [ô]protocol;
Port.Enabled = True
Port.IpVersion = NET_FW_IP_VERSION_.NET_FW_IP_VERSION_ANY
Port.RemoteAddresses = [Ô]*[Ô]
Ports.Add(Port)
Return True
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Firewall do windows[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
via regedit https://support.microsoft.com/pt-br/help/823938/how-to-configure-sql-server-to-listen-on-a-specific-port
SQL Server 2008 e SQL Server 2005
Para configurar uma instância do SQL Server 2008 ou SQL Server 2005 para usar uma porta estática, execute as etapas descritas no como: configurar um servidor para escutar em uma porta de TCP especÃfica (SQL Server Configuration Manager) tópico nos Manuais Online do SQL Server 2005 ou nos Manuais Online do SQL Server 2008.
Para configurar uma porta estática para o especializado dedicado administrador conexão (DAC), você deve atualizar a chave de registro que corresponde à sua instância. Por exemplo, a chave do registro pode ser o seguinte:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.. X\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp
Observação: O [Ô]X[Ô] em [Ô]MSSQL. X[Ô]é um número que indica o diretório onde a instância é instalada para o SQL Server 2005 ou o nome da instância do SQL Server 2008.
eu conferi e é tranquilo e funciona)
assim como no manager precisa reiniciar
outras formas, mas mudando o regedit
http://stefanteixeira.com/2015/09/01/automating-sqlserver-config-with-powershell-wmi/
https://blog.dbi-services.com/sql-server-2012-configuring-your-tcp-port-via-powershell/
SQL Server 2008 e SQL Server 2005
Para configurar uma instância do SQL Server 2008 ou SQL Server 2005 para usar uma porta estática, execute as etapas descritas no como: configurar um servidor para escutar em uma porta de TCP especÃfica (SQL Server Configuration Manager) tópico nos Manuais Online do SQL Server 2005 ou nos Manuais Online do SQL Server 2008.
Para configurar uma porta estática para o especializado dedicado administrador conexão (DAC), você deve atualizar a chave de registro que corresponde à sua instância. Por exemplo, a chave do registro pode ser o seguinte:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.. X\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp
Observação: O [Ô]X[Ô] em [Ô]MSSQL. X[Ô]é um número que indica o diretório onde a instância é instalada para o SQL Server 2005 ou o nome da instância do SQL Server 2008.
eu conferi e é tranquilo e funciona)
assim como no manager precisa reiniciar
outras formas, mas mudando o regedit
http://stefanteixeira.com/2015/09/01/automating-sqlserver-config-with-powershell-wmi/
https://blog.dbi-services.com/sql-server-2012-configuring-your-tcp-port-via-powershell/
Boa tarde, pessoal
DS2T vou tentar fazer um teste aqui, qualquer coisa eu te respondo.
PLUGSOFTSM, bom exemplo, mas o que eu preciso é alterar ou inserir a porta dentro do sql express. Alguns computadores que estou tendo problemas é por causa desta bendita porta que nem sequer estava lá, tive que entrar no manager e coloca-las.
LVFIOROT vou dar uma olhada nestes tópicos e te respondo.
Por enquanto obrigado á vcs pelo auxilio, abraços!
DS2T vou tentar fazer um teste aqui, qualquer coisa eu te respondo.
PLUGSOFTSM, bom exemplo, mas o que eu preciso é alterar ou inserir a porta dentro do sql express. Alguns computadores que estou tendo problemas é por causa desta bendita porta que nem sequer estava lá, tive que entrar no manager e coloca-las.
LVFIOROT vou dar uma olhada nestes tópicos e te respondo.
Por enquanto obrigado á vcs pelo auxilio, abraços!
Vale lembrar que estes procedimentos tanto via regedit como via código para abrir o firewall do windows citados pelos amigos acima, precisam ter premissão de administrdor do windows, ou seja, este programa não rodará de forma alguma em um usuário comum.
Boa noite, DS2T, voce tem algum exemplo?
Boa noite.
Faça referência a dll:
Após isso:
O código pode parecer um pouco estranho, porque estou usando uma função que retorna um KeyValuePair.
é que retirei esse exemplo do meu projeto, e eu reaproveito essa função pra saber se a porta já tinha sido configurada...
O código também não precisa ser tão grande. Repare que eu uso um pedaço de código para Parar o serviço do SQL Server e depois iniciar novamente, para que a mudança tenha efeito.
Outra coisa que reparei é que de vez em quando, simplesmente não iniciava novamente. Aà coloquei um Sleep. Como no meu código, eu executo isso dentro de uma Thread secundária, não fica travada a tela...
Abraços!
Faça referência a dll:
using Microsoft.SqlServer.Management.Smo.Wmi;
Após isso:
private const instancia = [Ô]SQLEXPRESS[Ô];
private void MudaPorta(int porta)
{
ManagedComputer pc = new ManagedComputer();
Service servicoInstancia = pc.Services[string.Concat([Ô]MSSQL$[Ô], instancia)];
if (servicoInstancia.ServiceState == ServiceState.Running)
{
servicoInstancia.Stop();
}
KeyValuePair<ServerProtocol, ProtocolProperty> p = RetornaProtocoloIP();
p.Value.Value = porta;
p.Key.Alter();
Thread.Sleep(5000);
servicoInstancia.Start();
}
private KeyValuePair<ServerProtocol, ProtocolProperty> RetornaProtocoloIP()
{
ManagedComputer pc = new ManagedComputer();
ServerInstance s = pc.ServerInstances[instancia];
ServerProtocol prot = s.ServerProtocols[[Ô]Tcp[Ô]];
return new KeyValuePair<ServerProtocol, ProtocolProperty>(prot, prot.IPAddresses[[Ô]IPAll[Ô]].IPAddressProperties[[Ô]TcpPort[Ô]]);
}
O código pode parecer um pouco estranho, porque estou usando uma função que retorna um KeyValuePair.
é que retirei esse exemplo do meu projeto, e eu reaproveito essa função pra saber se a porta já tinha sido configurada...
O código também não precisa ser tão grande. Repare que eu uso um pedaço de código para Parar o serviço do SQL Server e depois iniciar novamente, para que a mudança tenha efeito.
Outra coisa que reparei é que de vez em quando, simplesmente não iniciava novamente. Aà coloquei um Sleep. Como no meu código, eu executo isso dentro de uma Thread secundária, não fica travada a tela...
Abraços!
Obrigado DS2T, vou fazer o teste, valeu.
Tópico encerrado , respostas não são mais permitidas