서버와의 접속은 정상적으로 확립되었지만, 로그인 프로세스중에 에러가 발생했습니다.(에러 번호: 233)
SQL Server 연결 중 오류가 발생했습니다.
스택 트레이스의 상세 내용은 다음과 같습니다.
===================================
Cannot connect to ServerName.
===================================
A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) (.Net SqlClient Data Provider)
------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476
------------------------------
Server Name: ServerName
Error Number: 233
Severity: 20
State: 0
------------------------------
Program Location:
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
메모 난 시도했다.
SQL Server Management Studio를 닫고 다시 엽니다.
닫힘, VS 다시 열기 및 솔루션 재구축
데이터베이스에 액세스하는 작업자 프로세스가 중지되었습니다.
로그인 자격 정보가 올바릅니다.
서버가 다운되지 않았는지 확인하기 위해 ping할 수 있습니다.
Visual Studio 개발 환경에서 연결 문자열과 동일한 오류 발생
개발 데이터베이스 서버에 최근 자기 서명 증명서가 주어졌기 때문에 자동으로 신뢰할 수 없게 되었습니다.그 결과, 상기의 로그인 에러가 발생했습니다.는 ㅇㅇㅇㅇㅇㅇㅇㅇ다를 넣었습니다.TrustServerCertificate=True
이제 작동하게 되었습니다.
"Server=TheServerAddress; Database=TheDataBase; User Id=TheUsername; Password=ThePassword; TrustServerCertificate=True"
메모: 이 증명서 구성은 실제 가동 환경에서는 권장되지 않습니다.
SQL2008의 경우
- Management Studio 열기
- 인스턴스에서 RT 클릭
- 부동산에 가다
- [보안]
- [ Server Authentication ]그래서 [SQL Server and Windows Authentication Mode]체크박스를 켜겠습니다
- OK를 누르다
구성 관리자를 사용하여 서버를 재시작합니다.
서버에서 SQL 서비스가 중지된 것으로 나타났습니다.SQL Server 서비스를 수동으로 재시작하는 것이 해결책이었습니다.
내 경우 연결 문자열에 다음과 같은 오류가 있었습니다.
Encrypt=True
로의 변경
Encrypt=False
문제를 해결했다
"Server=***;Initial Catalog=***;Persist Security Info=False;User ID=***;Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;"
[src]는 다음과 같이 도움이 되었습니다.
[ File ] > [ Connect Object Explorer ]...> [ Options ](오른쪽 아래) > [ Connection Properties ]탭 > [ Trust Server Certificate ]체크박스
Trusted_Connection= 추가도움이 되는 연결 문자열에 충실합니다.
다음과 같은 점이 좋습니다.시험:
- 관리자 권한으로 SSMS 시작
- SQL 서비스가 실행 중인지 확인합니다.시작 유형을 '자동'으로 변경
- SSMS의 서비스인스턴스 속성 테이블에서 다음을 활성화합니다.
접속 문자열에 지정된 데이터베이스 이름이 존재하지 않는 경우에도 이 오류가 발생할 수 있습니다.DB 이름을 주의 깊게 확인하십시오!
MS SQL Management Studio용
Options >> 연결 속성 및 Trust Server Certificate 옵션을 선택합니다.
여기서부터:
근본 원인: SQL Server 인스턴스의 최대 연결 수를 초과했습니다.
고치는 방법...!
- F8 또는 객체 탐색기
- [ Instance ]를 오른쪽 클릭합니다.-- > [ Properties ... ]을 클릭합니다.
- 왼쪽의 "Select a page" 영역에서 "Connections"를 선택합니다.
- "최대 동시 연결 수(0 = 무제한)"의 값을 0으로 변경
- SQL Server 인스턴스를 한 번 재시작합니다.
또, 이하가 유효하게 되어 있는 것도 확인합니다.
- 공유 메모리 프로토콜 사용
- 명명된 파이프 프로토콜이 사용됨
- TCP/IP 가 유효하게 되어 있다
'관리자로서 실행' 응용 프로그램을 시작할 때.이렇게 해서 나는 이 오류를 피했다.
SQL 2016 솔루션/회피책(이전 버전에서도 사용할 수 있음)이것은 모든 상황에서 동작하거나 적절하지 않을 수 있지만, SSMS에서 다음과 같이 데이터베이스 사용자에게 읽기/쓰기 스키마 소유권을 부여하여 오류를 해결했습니다.
[ Database ]> [ Security ]> [ Users ]> [ User ]> [ Properties ]> [ Owned Schemas ]> [ db _ datareader ]및 [db_datawrit
이것으로 문제가 해결되었습니다.net core에서 변경한 내용은 Appsetting.json에서 변경하십시오.
Server=***;Database=***;Persist Security Info=False;User ID=***; Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30
Package console manager에서 다음 변경을 수행합니다.
Scaffold-DbContext "Server=***;Database=***;Persist Security Info=False;User ID=***; Password=***;MultipleActiveResultSets=False;Encrypt=False;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context DatabaseContext -f
해피 코딩
다음은 제가 찾은 해결책입니다.
SQL Server 관리, 공유 메모리 사용 안 함, TCP/IP 및 파이프 이름 지정으로 이동합니다.
서버를 재기동해, 재시도 합니다.
이 경우 [옵션]의 [접속 속성]에서 <기본값>을 마스터로 변경하면 문제가 해결되었습니다.
여기 올라온 답들 말고는 뭔가 특이한 상황이 있었던 것 같아요.
sysadmin sa가 아닌 제한된 로그인(데이터베이스 사용자에 매핑됨)으로 데이터베이스에 연결합니다.
동일한 SQL Server 데이터베이스 상의 다른 데이터베이스 복사본에서 데이터베이스별로 복원했지만(다른 SQL Server 데이터베이스 서버에서 복원한 경우에도 동일한 문제가 발생합니다) 데이터베이스 사용자를 삭제하지 않고 다시 생성했습니다.
따라서 기본적으로 여기서 SQL 서버 데이터베이스를 복원하려면 다음과 같이 해야 합니다.
- 데이터베이스 복원
- 사용자가 소유한 역할(최종적으로 작동하지 않는 로그인에 매핑됨)을 삭제합니다.
- 로그인에 매핑된 사용자를 삭제합니다.
- 사용자에게 로그인을 다시 매핑합니다.
- 역할을 재생성하고 해당 역할에 사용자 추가
Microsoft 다운로드에서 이 에러가 발생.Data.SqlClient 패키지
Microsoft 를 삭제.Data.SqlClient 패키지로 동작했습니다.
문제를 해결하기 위한 단계:
Goto File > Connect Object Explorer..> [ Options ]> [ Connection Properties ] :'연결 인증서 신뢰' 확인란이 선택되어 있는지 확인하십시오.
Goto File > Connect Object Explorer..> [ Options ]> [ Connection Properties ] :'암호화 연결' 확인란이 선택 취소되었는지 확인하십시오.
'SQL Server(MSSQLSERVER)' 및 'SQL Server 에이전트(MSSQLSERVER)' 서비스가 실행 중인지 확인합니다.
연결 문자열에 다음 문을 추가합니다.
Trusted_Connection=True;TrustServerCertificate=맞다
이렇게 해서 나는 문제를 해결할 수 있었다.
경우에 따라서는 (기본값이 아닌) 데이터베이스를 지정하면 이 오류가 해결됩니다.
는, 「 」를 한 코드 행에 됩니다.SqlConnection.Open()
.crunning my .crunning.x64 NET.x86을 사용하다
Force protocol encryption
%windir%\System32\cliconfg.exe
로그인하려는 사용자에게 권한이 없기 때문에 이 오류가 발생했습니다.
것은하지 않지만, 는 사용자에게 했습니다.db_owner
큰 .국지적인 사건이었기 때문에 큰 보안 문제는 아닙니다.
@Pranav Singh와 @Rahul Tripathi의 답변에 더하기 위해.두 명의 사용자가 언급한 모든 작업을 수행했지만, 제 .net 앱은 여전히 데이터베이스에 연결되지 않았습니다.제 해결책은요.
SQL Server 구성 관리자를 열고 SQL SERVER의 네트워크 구성으로 이동한 후 프로토콜을 클릭하고 TCP/IP를 마우스 오른쪽 버튼으로 클릭하고 사용을 선택합니다.[속성]을 우클릭하여 [IP]를 열고 [IPAII], [TCP 포트]에서 포트를 셋업했습니다(1433은 디폴트로 되어 있습니다.
두 가지 일을 해야 했어요Joseph Wu가 말한 대로 인증을 SQL과 Windows로 변경합니다.그러나 Server Properties > Advanced 순으로 이동하여 Enable Contained Databases를 True로 변경해야 합니다.
위의 솔루션 중 하나가 힌트를 주었습니다.sa 계정에서 이 오류가 발생하고 있습니다.관리자 권한을 가진 Windows 서비스 계정으로 로그인할 수 있었습니다.최근 어느 시점에서는 패스워드 정책을 강화하기 위해 GPO가 적용되었습니다.기존 sa 암호가 강화된 새 암호 정책을 충족하지 않습니다.
대체 관리자 자격 증명을 사용하여 SQL Server Management Studio에 로그인합니다.[ Instance ]> [ Security ]> [ Logins ]> [ account ](내 경우는 sa)"비밀번호 정책 적용"을 선택 취소합니다.[확인]을 클릭합니다.연결을 끊었다가 계정으로 다시 로그인하십시오.
나한테는 통했어
서버를 재기동하고, 다양한 작업을 재실행할 수 있도록 했습니다만, 시간이 걸리면, 서버를 재기동하지 않고 SSMS로부터 재기동할 수 있었을 가능성이 있습니다.
이전에 DB에 대한 연결 수를 2개로 제한했습니다.분명히 이것은 이슈였다.서버를 재시작한 후 로그인하면 오류 팝업이 나타나고 OK를 클릭합니다.오브젝트 탐색기에서 서버를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동한 후 연결로 이동하여 제한된 연결 수(2에서 20으로 변경)를 변경합니다.
오래된 포스트라서 감사합니다.그런데 오늘 우연히 MS 포럼에서 잘못된 해결책을 많이 보았습니다.여기 있는 거의 모든 것들이 나에게도 통하지 않았다.
도움이 된 것은 \bin\Debug에서 .ldf 파일을 삭제한 것입니다.
이 문제의 원인 중 하나는 데이터베이스 로그인이 데이터베이스 내의 사용자에게 매핑되지 않은 경우입니다.해결책은 물론 간단합니다.로그인을 데이터베이스 사용자에게 매핑합니다.
보안으로 사용자를 만듭니다.기본 데이터베이스가 마스터로 설정된 후 SQL Server 인증에 로그인할 수 있습니다.
데이터베이스를 삭제한 후 오류가 발생했습니다.이 db는 mssql 관리툴에 의해 선택된 기본 db이기 때문에 연결이 확립되었지만 db가 누락되었기 때문에 프로세스에 오류가 발생하였습니다.해결책은 defaut db를 기존 db로 변경하는 것입니다.연결 팝업에서 '데이터베이스 연결' 버튼을 누른 다음 '데이터베이스에 연결' 필드에서 SQL 서버에 있는 항목을 선택합니다.해결해주신 것 같아요.:)
저는 다음과 같은 것이 성공했습니다.
- SQL Server 구성 열기
- 왼쪽의 "SQL Server 네트워크 구성"에서 "MS SQLSERVER용 프로토콜"을 클릭합니다.
- 그런 다음 오른쪽에서 "Named Pipes"를 "Enabled"로 설정하십시오.
PC를 재기동.그러면 제 sa 계정으로 다시 로그인 할 수 있습니다.
언급URL : https://stackoverflow.com/questions/34430550/a-connection-was-successfully-established-with-the-server-but-then-an-error-occ
'programing' 카테고리의 다른 글
하위 디렉토리를 별도의 Git 저장소로 분리(이동) (0) | 2023.04.10 |
---|---|
Microsoft Office Excel에서 'c:\inetpub\wwwroot\' 파일에 액세스할 수 없습니다.타임시트\App_Data\템플릿xlsx' (0) | 2023.04.10 |
인스턴스 멤버를 형식에 사용할 수 없습니다. (0) | 2023.04.10 |
클라이언트 IP 주소의 최대 길이 (0) | 2023.04.10 |
키/값 쌍의 파일에서 환경 변수 설정 (0) | 2023.04.10 |