SQL Server - 127.0.0.1로 접속하는 경우 "Access is denied"가 발생한다면?
이상하군요, DB 연결을 이런 식으로 설정했는데,
Password=TestPassword;Integrated Security=false;User ID=TestUser;Initial Catalog=TestDB;Data Source=127.0.0.1
SSMS에서 로그인이 안 됩니다.
Cannot connect to 127.0.0.1.
ADDITIONAL INFORMATION:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5)
For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-5-database-engine-error
Access is denied
C# 코드에서는 이렇게 오류가 발생하는데요,
System.Data.SqlClient.SqlException
HResult=0x80131904
Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Source=.Net SqlClient Data Provider
StackTrace:
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
...[생략]...
Inner Exception 1:
Win32Exception: Access is denied
예전에 비슷한 오류가 있었지만,
SQL Server Express 연결 오류 - A network-related or instance-specific error occurred while establishing a connection to SQL Server.
; https://www.sysnet.pe.kr/2/0/11301
이번에는 살짝 다른 것이, "127.0.0.1" 대신 "."로 대체하면 연결이 잘 된다는 점입니다.
Password=TestPassword;Integrated Security=false;User ID=TestUser;Initial Catalog=TestDB;Data Source=.
처음에는, "SQL Server Developer Edition"의 제약인가 싶었는데... 그게 좀 말이 안 되는 것이, 아무리 개발자 버전이라도 로컬에서만 접속 테스트를 하도록 막지는 않았을 것이기 때문입니다. 그러다 문득 생각난 것이 프로토콜 설정이었는데요, ^^ 별도로 "SQL Server Configuration Manager"를 실행해 "SQL Server Network Configuration" / "Protocols for MSSQLSERVER"의 "TCP/IP"를 다음과 같이 "Enabled"로 설정하는 것으로 해결할 수 있었습니다.
아마도 Developer Edition에서만 기본값이 Disabled가 아닐까 싶군요. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]