Windows 2022
Sponsored Link

SQL Server 2022 : リモートホストから接続 : Windows 認証
2023/01/13
 
インストールした SQL Server のデータベースエンジンに、リモートホストから Windows 認証で接続するには以下のように設定します。
Windows 認証で接続するため、接続先の SQL Server インストール ホストと、接続元の クライアント ホストが、同じ Active Directory ドメインに所属していることが前提です。
[1] リモートホストから Windows 認証で接続するには、SQL Server 側で TCP/IP の設定を有効にします。
CUI で変更する場合は PowerShell を管理者権限で起動して設定します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# インスタンス名確認
PS C:\Users\Administrator> Get-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server" | Out-String -Stream | Select-String "InstalledInstances"

InstalledInstances : {MSSQLSERVER}

# TCP/IP の設定を有効にする
# MSSQL16.(確認したインスタンス名)
PS C:\Users\Administrator> Set-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp" -Name "Enabled" -Value 1

PS C:\Users\Administrator> Get-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp" -Name "Enabled"

Enabled      : 1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL
               Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL
               Server\MSSQL16.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
PSChildName  : Tcp
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

PS C:\Users\Administrator> Get-Service | Out-String -Stream | Select-String "SQL"

Running  MsDtsServer160     SQL Server Integration Services 16.0
Running  MSSQLFDLauncher    SQL Full-text Filter Daemon Launche...
Running  MSSQLSERVER        SQL Server (MSSQLSERVER)
Running  MSSQLServerOLAP... SQL Server Analysis Services (MSSQL...
Stopped  SQLBrowser         SQL Server Browser
Stopped  SQLSERVERAGENT     SQL Server Agent (MSSQLSERVER)
Running  SQLTELEMETRY       SQL Server CEIP service (MSSQLSERVER)
Running  SQLWriter          SQL Server VSS Writer
Running  SSASTELEMETRY      SQL Server Analysis Services CEIP (...
Running  SSISTELEMETRY160   SQL Server Integration Services CEI...

# インスタンスサービスのログオンアカウント確認
PS C:\Users\Administrator>  Get-WmiObject Win32_Service -filter "name='MSSQLSERVER'" | Select-Object -Property "StartName" 

StartName
---------
NT Service\MSSQLSERVER

# インスタンスサービスのログオンアカウントがローカルアカウントの場合
# 任意のドメインアカウントに変更
# * ローカルシステムで管理者権限を保有するドメインアカウント
PS C:\Users\Administrator> (Get-WmiObject Win32_Service -filter "name='MSSQLSERVER'").Change($null,$null,$null,$null,$null,$null,"FD3S01\SQLAdmin","P@ssw0rd01") 

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 0
PSComputerName   :

# インスタンスサービス 再起動
PS C:\Users\Administrator> Restart-Service MSSQLSERVER

# インスタンスサービスが ポート 1433 (既定) をリスンするようになる
PS C:\Users\Administrator> netstat -a | Select-String "1433" 

  TCP    0.0.0.0:1433           rx-8:0                 LISTENING
  TCP    [::]:1433              rx-8:0                 LISTENING

# Windows Firewall 稼働中の場合は インスタンスサービス ポートを許可
PS C:\Users\Administrator> New-NetFirewallRule -Name "MSSQL" `
-DisplayName "SQL Server" `
-Description "Allow Database Engine" `
-Profile Any `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-Program Any `
-LocalAddress Any `
-RemoteAddress Any `
-LocalPort 1433 `
-RemotePort Any 

# 任意のドメインアカウントを インスタンスの login に追加する
PS C:\Users\Administrator> sqlcmd -S localhost 

# 現在の login 一覧
1> select sp.name as login from sys.server_principals sp 
2> go 
login 
------------------------------------------
sa                                        
public                                    
sysadmin                                  
securityadmin                             
serveradmin                               
setupadmin                                
processadmin                              

.....
.....

RX-8\Administrator                        
NT SERVICE\SQLWriter                      
NT SERVICE\Winmgmt                        
NT Service\MSSQLSERVER                    
NT AUTHORITY\SYSTEM                       
NT SERVICE\SQLSERVERAGENT                 
NT SERVICE\SQLTELEMETRY                   

# ドメインアカウントを login に追加
1> create login [FD3S01\SQLAdmin] from windows 

# 管理者権限を付与する場合は [sysadmin] ロール付与
2> exec sp_addsrvrolemember 'FD3S01\SQLAdmin', 'sysadmin' 

3> go 

1> exit 
SQL Server 2022 : リモートホストから接続 : Windows 認証 (GUI)
[2]
GUI で変更する場合は、以下のように設定します。
スタートメニューから [SQL Server 2022 構成マネージャー] を起動し、左ペインで [SQL Server ネットワークの構成] を展開して、右ペインで [TCP/IP] を有効にします。
[3] 左ペインで [SQL Server Services] を選択し、右ペインで [SQL Server (インスタンス名)] を右クリックして [プロパティ] を開きます。
[4] [ログオン] タブに移動し、ログオンアカウントを任意のドメインアカウントに変更します。
また、変更したドメインアカウントには、ローカルシステムの管理者権限を付与しておきます。
[5] [SQL Server (インスタンス名)] を右クリックして [再起動] を選択して、変更内容を有効にします。
[6] Windows Firewall 稼働中の場合は インスタンス サービス ポートを許可しておきます。(規定は 1433)
[7] SSMS (SQL Server Management Studio) を起動し、インスタンス サービス に接続して、以下のようにドメインアカウントのログインを作成しておきます。 必要に応じて [sysadmin] 権限等も付与します。以上で完了です。
SQL Server 2022 : リモートホストから接続 : Windows 認証 (クライアント)
[8]
クライアントホストからの Windows 認証での SQL Server への接続です。Windows 11 を例にします。
SQL Server Management Studio (SSMS) をダウンロードしてインストールします。
⇒ https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms
データベース インスタンスの login に追加したドメインアカウントで Windows にログオンし、SSMS を起動して接続します。
[9] 問題なければ Windows 認証でログインできます。
[10]
コマンドで接続したい場合は [sqlcmd] コマンドを利用します。
[sqlcmd] は SSMS 18 からは含まれなくなったため、利用したい場合は別途インストールする必要があります。
⇒ https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver16
[sqlcmd] コマンドをインストールすると、CUI での SQL Server への接続も可能です。
関連コンテンツ