如何啟用或禁用SQL Server數據庫的TCP/IP網絡協議
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
SQL Server 安裝程序安裝了 TCP 和 Named Pipes 網絡協議,但這些協議可能并未啟用。可以使用以下 PowerShell 腳本或者使用 SQL Server 配置管理器啟用或禁用網絡協議。必須停止然后再重新啟動 SQL Server 數據庫引擎,對協議所做的更改才會生效。
有關 PowerShell 的常規信息,請參閱 SQL Server PowerShell 概述。有關如何使用 SQL Server 配置管理器管理協議的詳細信息,請參閱如何啟用或禁用服務器網絡協議(SQL Server 配置管理器)。
SQL Server PowerShell (SQLPS.exe) 實用工具會啟動一個 PowerShell 會話,并加載和注冊 SQL Server PowerShell 提供程序和 cmdlets。當運行 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 啟用服務器網絡協議
使用管理員權限打開一個命令提示符。
若要啟動 SQL Server PowerShell,請在命令提示符處鍵入 sqlps.exe。
執行以下語句以啟用 TCP 和 Named Pipes 協議。將
$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='
$Tcp = $wmi.GetSmoObject($uri)
$Tcp.IsEnabled = $true
$Tcp.Alter()
$Tcp
# Enable the named pipes protocol for the default instance.
$uri = "ManagedComputer[@Name='
$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']"
使用 SQL Server PowerShell 重新啟動數據庫引擎
啟用或禁用了協議后,必須停止并重新啟動數據庫引擎才能使更改生效。執行以下語句,通過使用 SQL Server PowerShell 來停止和啟動默認實例。若要停止和啟動命名實例,請將 'MSSQLSERVER' 替換為 'MSSQL$
# Get a reference to the ManagedComputer class.
CD SQLSERVER:\SQL\
$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 該文章在 2021/5/19 10:37:04 編輯過
|
關鍵字查詢
相關文章
正在查詢... |