나는 (MSSQL 2005에서) 특정 테이블에서 필드를 설정할 때 한 명의 사용자 만 허용하는 SQL 메커니즘을 만들고 있습니다. 이 필드가 설정된 경우 다른 사람이 필드를 지울 수 없습니다 (NULL로 설정). 그렇지 않은 경우이 필드는 something unique for the user's session
으로 설정됩니다. 좋은 후보자 인 master.dbo.sysprocesses.sid
이 나를 찾지만 그걸로 확신하지 못합니다.master.dbo.sysprocesses의 어떤 열이 세션에 고유합니까?
사용자의 클라이언트 응용 프로그램 (이 메커니즘을 사용하는)이 충돌 할 때이를 확인해야 필드가 지워지고 다른 사용자가 사용할 수 있습니다. 나는이 필드를 설정 한 사용자의 세션이 아직 활성 상태인지 아닌지를 확인하는 일부 지우기 작업에 대해 생각하고 있습니다. 그렇다면 필드가 NULL이 아닌 경우에만 지워야합니다.
나중에 동일한 값을 다시 사용하지 않고 각 사용자 세션에 대해 master.dbo.sysprocesses에 고유 한 열이 있습니까?
덕분에 많은
답변 주셔서 감사합니다.하지만 제 목적으로 사용할 수 없습니다. 일부 세션 (이미 종료 된)이있는 SPID는 나중에 다른 세션을 다시 얻을 수 있으므로 내 정리 작업은 이전 세션인지 또는 세션인지를 인식 할 수 없습니다. –
문제는 내 응용 프로그램이 아니라는 것입니다. 확장 플러그인을 작성하고 있습니다. 그리고 충돌로 인해 연결 문제가 발생할 때 호스트 된 응용 프로그램이 닫히는 것을 의미합니다 (일부 경우 호스트에서 wi-fi를 사용하기 때문에이 문제가 발생합니다). 그리고 독점적 인 레코드 수정을 위해 이러한 잠금을 보장해야합니다. DB 작업을 위해서는 재사용하지 않고 각 세션에 대해 고유 한 가치가 필요합니다. –
알았어.'login_time'을 사용할 수 있는데,이 테이블에서 유일하고 반복 할 수없는 세션 식별자 인 것 같습니다. 당신이 대답을 수정한다면 나는 그것을 받아 들일 것이고, 나는 내 자신의 대답을 받아들이지 않을 것이다. –