我的任务是编写一个脚本,为SQL Server 2008 Express R2实例启用tcp和命名管道协议。我已经了解了如何为SQL Server实例本身启用这些协议,但我还没有找到任何方法来从PowerShell控制SQL Native Client。
我的脚本是安装程序的一部分,我正在安装的代码希望启用这些协议。
由于
答案 0 :(得分:5)
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
$wmi = new-object ("Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer") "$env:computername"
$wmi.ServerInstances["SQLEXPRESS"].ServerProtocols["Tcp"].IsEnabled = $true
$wmi.ServerInstances["SQLEXPRESS"].ServerProtocols["Np"].IsEnabled = $true
$wmi.ClientProtocols["tcp"].IsEnabled = $true
$wmi.ClientProtocols["np"].IsEnabled = $true
答案 1 :(得分:1)
我终于找到了解决方案。可以通过设置注册表项来启用协议:
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI10.0
中,设置ProtocolOrder
密钥以包含应启用的协议:
sm = Shared memory
np = Named pipes
tcp = TCP (he)
via = Via
此密钥中未列出的协议将被禁用。