SQL Server 接続トラブルシューティングまとめ

sponsor link

問題①:アプリからSQL Serverに接続できない

エラーメッセージ: ユーザー 'ユーザ名' はログインできませんでした。

原因と対策

原因対策
SQL Server 認証モードが「Windows認証のみ」だったSQL Server 構成マネージャー → 認証モードを「SQL Server + Windows認証」に変更し、SQL Server サービスを再起動
<ユーザ> ログインが存在しないCREATE LOGIN ユーザ名 WITH PASSWORD = '●●●' を実行して作成
ログインが「無効」になっていたALTER LOGIN <ユーザ> ENABLE で有効化
データベースにユーザーが存在しないCREATE USER <ユーザ> FOR LOGIN <ユーザID>USE DB名 内で実行
アプリの接続文字列が間違っているC# の app.configconnectionString に正しい「Server」「Database」「User Id」「Password」を指定
TrustServerCertificate=true; も追加済み
SQL Server ポート(1433)が開いていなかったSQL Server 構成マネージャーでTCP/IPを有効化、1433を固定指定、ファイアウォールで許可、サービス再起動

問題②:SSMSでユーザーマッピング追加時にエラー

エラーメッセージ: ユーザー 'ユーザ名' は既に存在します。

原因

  • 該当データベース内に既にユーザー <ユーザ名> が存在していたため、二重作成になっていた。

対策

  • CREATE USER ではなく ALTER USER を使用し、既存のログインと関連付ける
USE 該当データベース;
ALTER USER ユーザ名 WITH LOGIN = ユーザ名;

問題③:ping応答はあるのに、SQLポート(1433)が疎通しない

確認コマンド

Test-NetConnection -ComputerName IPアドレス -Port 1433

原因

  • SQL ServerのTCP/IPが無効だった or ポート未固定 or ファイアウォール未設定

対策

  • 「SQL Server 構成マネージャー」 > TCP/IP を有効化
  • IPAllセクションの TCPポート = 1433 に設定

  • サーバーのファイアウォールを以下で一時的に無効化確認
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

または以下でポート許可を追加

New-NetFirewallRule -DisplayName "SQL Server 1433" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow

テスト・検証手順のポイント

テスト内容ツール成功条件
ping応答確認ping IPアドレス応答あり
ポート開放確認Test-NetConnectionTcpTestSucceeded : True
SQLログイン確認SSMSSQL Server 認証でログイン成功
C#アプリ接続確認アプリ起動 or テストコード接続成功し、例外発生なし

最終的に成功した接続文字列(C#)

<connectionStrings>
<add name="IIMSConnection"
connectionString="Server=IPアドレス,1433;
DataBase=データベース名;
User Id=ユーザ名;
Password=パスワード;
TrustServerCertificate=true;"
providerName="Microsoft.Data.SqlClient"/>
</connectionStrings>

📌 参考:認証モード変更後のサービス再起動(必須)

  1. SQL Server 構成マネージャーを開く
  2. 該当インスタンスを右クリック → 再起動
タイトルとURLをコピーしました