サーバー ネットワーク プロトコルの有効化または無効化
適用対象: SQL Server - Windows のみ
すべてのネットワーク プロトコルは SQL Server セットアップによってインストール中にインストールされますが、必ずしも有効になっているとは限りません。 この記事では、SQL Server で SQL Server 構成マネージャーまたは PowerShell を使用してサーバー ネットワーク プロトコルを有効または無効にする方法について説明します。 変更を有効にするために データベース エンジン を停止し、再起動する必要があります。
解説
SQL Server Express エディションのセットアップ時に、BUILTIN\Users グループにログインが追加されます。 このログインにより、コンピューターの認証されたすべてのユーザーが public ロールのメンバーとして SQL Server Express のインスタンスにアクセスできるようになります。 BUILTIN\Users ログインを安全に削除して、 データベース エンジン アクセスを、個別のログインを持つコンピューター ユーザーまたはログインを持つ他の Windows グループのメンバーに制限できます。
SQL Server 2014 (12.x) までの SQL Server および SQL Server 向けの Microsoft データ プロバイダーは、既定で TLS 1.0 および SSL 3.0 のみをサポートしています。 オペレーティング システムの SChannel レイヤーを変更して異なるプロトコル (TLS 1.1、TLS 1.2 など) を適用する場合、SQL Server に TLS 1.1 および 1.2 のサポートを追加する適切な更新プログラムをインストールしないと、SQL Server への接続は失敗する可能性があります。 詳しくは、KB 3135244 を参照してください。 SQL Server 2016 (13.x) 以降、SQL Server のすべてのリリース バージョンには TLS 1.2 のサポートが含まれているため、更新プログラムをさらにインストールする必要はありません。
SQL Server 構成マネージャーを使用する
SQL Server 構成マネージャーのコンソール ペインで、 [SQL Server ネットワークの構成] を展開します。
コンソール ペインで、[<インスタンス名> のプロトコル] を選択します。
詳細ウィンドウで、変更するプロトコルを右クリックし、[有効化] または [無効化]を選択します。
コンソール ペインで、[再起動] を選択します。
詳細ウィンドウで [SQL Server (<インスタンス名>)] を右クリックします。次に、[再起動] を選択して、SQL Server サービスを停止し、再起動します。
注意
SQL Server の名前付きインスタンス (SQL Server Express エディションを含む) がある場合は、SQL Server Browser サービスも再起動する必要があります。
SQL Server PowerShell を使う
PowerShell を使ってサーバー ネットワーク プロトコルを有効にする
管理者権限を使って、コマンド プロンプトを開きます。
タスク バーまたは [スタート] メニューから Windows PowerShell を起動します。
「
Import-Module SqlServer
」と入力して SqlServer モジュールをインポートします。次のステートメントを実行して TCP プロトコルおよび名前付きパイプ プロトコルの両方を有効にします。
<computer_name>
を、 SQL Serverを実行しているコンピューターの名前に置き換えます。 名前付きインスタンス (SQL Server Express エディションを含む) を構成する場合は、MSSQLSERVER
をインスタンス名に置き換えます。プロトコルを無効にするには、
IsEnabled
プロパティを$false
に設定します。このスクリプトは、SQL Server がインストールされている、またはインストールされていない任意のマシンから実行できます。 SqlServer モジュールがインストールされていることを確認します。
#requires the SqlServer module Import-Module SQLServer $wmi = New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer <#computer_name#> # 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']"
SQL Server PowerShell を使ってデータベース エンジンを再起動する
プロトコルを有効または無効にした後は、 データベース エンジン を停止してから再起動して、変更を有効にする必要があります。 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
注意
SQL Server の名前付きインスタンス (SQL Server Express エディションを含む) がある場合は、SQL Server Browser サービスも再起動する必要があります。