Как включить или отключить сетевой протокол сервера (SQL Server PowerShell)
Протокол TCP и протокол именованных каналов устанавливаются с помощью программы установки SQL Server, но могут быть не включены. Сетевые протоколы можно включить или отключить с использованием следующих сценариев PowerShell или с использованием диспетчера конфигурации SQL Server. Чтобы изменения протокола вступили в силу, необходимо остановить и перезапустить компонент SQL Server Database Engine.
Общие сведения о PowerShell см. в разделе Общие сведения о SQL Server PowerShell. Дополнительные сведения об управлении протоколами с использованием диспетчера конфигурации SQL Server см. в разделе Как включить или отключить протокол SNP (диспетчер конфигурации SQL Server).
Программа SQL Server PowerShell (SQLPS.exe) запускает сеанс PowerShell с помощью поставщика SQL Server PowerShell, а также загруженных и зарегистрированных командлетов. При запуске PowerShell (PowerShell.exe) вместо SQL Server PowerShell сначала выполните следующие инструкции, чтобы вручную загрузить необходимые сборки.
# Load the assemblies
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
Следующие сценарии включают протоколы. Чтобы отключить протоколы, установите для свойства IsEnabled значение $false.
Включение сетевого протокола сервера с использованием SQL Server PowerShell
Откройте командную строку с использованием разрешений администратора.
В командной строке введите sqlps.exe, чтобы запустить SQL Server PowerShell.
Выполните следующие инструкции, чтобы включить протокол TCP и протокол именованных каналов. Замените <computer_name> именем компьютера, на котором работает SQL Server. Если настраивается именованный экземпляр, замените MSSQLSERVER именем экземпляра.
$smo = 'Microsoft.SqlServer.Management.Smo.' $wmi = new-object ($smo + 'Wmi.ManagedComputer'). # List the object properties, including the instance names. $Wmi # Enable the TCP protocol on the default instance. $uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']" $Tcp = $wmi.GetSmoObject($uri) $Tcp.IsEnabled = $true $Tcp.Alter() $Tcp # Enable the named pipes protocol for the default instance. $uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']" $Np = $wmi.GetSmoObject($uri) $Np.IsEnabled = $true $Np.Alter() $Np
Настройка протоколов на локальном компьютере
Если сценарий запускается локально и настраивает локальный компьютер, с помощью SQL Server PowerShell можно сделать сценарий более гибким, динамически определяя имя локального компьютера. Для получения имени локального компьютера замените строку, устанавливающую переменную $uri, следующей строкой.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
Перезапуск компонента Database Engine с использованием SQL Server PowerShell
После включения или отключения протоколов необходимо остановить и перезапустить компонент Database Engine, чтобы эти изменения вступили в действие. Выполните следующие инструкции, чтобы остановить и запустить экземпляр по умолчанию с использованием SQL Server PowerShell. Чтобы остановить и запустить именованный экземпляр, замените 'MSSQLSERVER' на 'MSSQL$<instance_name>'.
# Get a reference to the ManagedComputer class. CD SQLSERVER:\SQL\<computer_name> $Wmi = (get-item .).ManagedComputer # Get a reference to the default instance of the Database Engine. $DfltInstance = $Wmi.Services['MSSQLSERVER'] # Display the state of the service. $DfltInstance # Stop the service. $DfltInstance.Stop(); # Wait until the service has time to stop. # Refresh the cache. $DfltInstance.Refresh(); # Display the state of the service. $DfltInstance # Start the service again. $DfltInstance.Start(); # Wait until the service has time to start. # Refresh the cache and display the state of the service. $DfltInstance.Refresh(); $DfltInstance
См. также