サーバー ネットワーク プロトコルの有効化または無効化

適用対象: 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 構成マネージャーを使用する

  1. SQL Server 構成マネージャーのコンソール ペインで、 [SQL Server ネットワークの構成] を展開します。

  2. コンソール ペインで、[<インスタンス名> のプロトコル] を選択します。

  3. 詳細ウィンドウで、変更するプロトコルを右クリックし、[有効化] または [無効化]を選択します。

  4. コンソール ペインで、[再起動] を選択します。

  5. 詳細ウィンドウで [SQL Server (<インスタンス名>)] を右クリックします。次に、[再起動] を選択して、SQL Server サービスを停止し、再起動します。

注意

SQL Server の名前付きインスタンス (SQL Server Express エディションを含む) がある場合は、SQL Server Browser サービスも再起動する必要があります。

SQL Server PowerShell を使う

PowerShell を使ってサーバー ネットワーク プロトコルを有効にする

  1. 管理者権限を使って、コマンド プロンプトを開きます。

  2. タスク バーまたは [スタート] メニューから Windows PowerShell を起動します。

  3. Import-Module SqlServer」と入力して SqlServer モジュールをインポートします。

  4. 次のステートメントを実行して 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 サービスも再起動する必要があります。