有没有办法通过 powershell 脚本或 sql 脚本启用 tcp/ip 协议?

有没有办法通过 powershell 脚本或 sql 脚本启用 tcp/ip 协议?

上下文:我得到了一个 Vagrantfile 来配置虚拟机,该虚拟机安装了 SQL-SERVER 2012、2014、2016 和 2017。当我检查 SQL SERVER 配置管理器时,我发现每个 SQL-SERVER 实例都禁用了 TCP/IP 协议。

有没有办法通过 powershell 脚本或 sql 脚本启用它们?

答案1

微软已经针对此主题提供了指导。

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-or-disable-a-server-network-protocol?view=sql-server-2017

使用 SQL Server PowerShell

使用以下方法启用服务器网络协议

  1. 使用管理员权限打开命令提示符。
  2. 从任务栏启动 Windows PowerShell,或者单击“开始”、“所有程序”、“附件”、“Windows PowerShell”和“Windows PowerShell”。
  3. 通过输入 Import-Module "sqlps" 来导入 sqlps 模块
  4. 执行以下语句以启用 TCP 和命名管道协议。将 <computer_name> 替换为运行 SQL Server 的计算机的名称。如果要配置命名实例,请将 MSSQLSERVER 替换为实例名称。要禁用协议,请将 IsEnabled 属性设置为 $false。
$smo = 'Microsoft.SqlServer.Management.Smo.'  
$wmi = new-object ($smo + 'Wmi.ManagedComputer'). 

列出对象属性,包括实例名称。

$Wmi  
    

在默认实例上启用 TCP 协议。

$uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"  
$Tcp = $wmi.GetSmoObject($uri)  
$Tcp.IsEnabled = $true  
$Tcp.Alter()  
$Tcp  
    

为默认实例启用命名管道协议。

$uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"  
$Np = $wmi.GetSmoObject($uri)  
$Np.IsEnabled = $true  
$Np.Alter()  
$Np

答案2

我还没有弄清楚如何迭代安装在同一台机器上的多个实例,但是这是一个脚本为命名实例启用 TCP 和命名管道。

答案3

可以直接从 SQL Server 配置管理器中启用 SQL Server 中的 TCP/IP 协议,方法是展开“SQL Server 网络配置”,然后展开“MSSQLSERVER 的协议”。

右键单击“TCP/IP”并选择“启用”,然后右键单击“SQL Server (MSSQLSERVER)”并选择“重新启动”。

有关 PowerShell 脚本,请参阅 Microsoft 文章 启用或禁用服务器网络协议

相关内容