MSSql Server Password Maximum error

Mssql 접근을 하다보니 아래와 같은 에러가 발생한 적이 있다.

Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “_mssql.pyx”, line 1829, in _mssql.connect (_mssql.c:19198)
File “_mssql.pyx”, line 596, in _mssql.MSSQLConnection.__init__ (_mssql.c:5855)
File “_mssql.pyx”, line 1557, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:15413)
_mssql.MSSQLDatabaseException: (18456, ‘DB-Lib error message 18456, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed\n’)

Mssql를 접근할때 라이브러리에서 FreeTDS라는 라이브러리를 이용하는데 이 라이브러리에서 발생하는 부분이였으며 패스워드가 30자를 초과해서 발생하는 문제였다.

FreeTDS mailing list에 보면 다음과 같은 링크를 찾을 수 있었다.
http://lists.ibiblio.org/pipermail/freetds/2011q2/027056.html 패스워드는 TDS_MAX_LOGIN_STR_SZ 상수로 정의된 30자보다 크게 되면 Fail이 발생한다.


왜 30자로 상수가 정의되어 있을까?

https://technet.microsoft.com/en-us/library/aa937058(v=sql.80).aspx를 보면 과거 MSSQL Server에서 최대패스워드 길이는 30자인걸 확인 할 수 있다.

따라서 FreeTDS git repo를 보면 위와 같은 Rule로 인하여 TDS_MAX_LOGIN_STR_SZ 상수를 기존에 30으로 선언해 놓았으며 128로 변경된 것을 볼 수 있다.

에러해결을 위해 git clone으로 프로젝트를 내려받고 시스템에서 build & install 하여 기존 라이브러리들은 교체 해주니 잘 동작된다.

FreeTDS history를 추적해보면 상수값은 사실 2013년도에 변경이 되었다. 과거의 산물로 인해 발생하는 크리티컬한 이슈가 repo에 빠른 버전업이 안되는건 다소 아쉽다.’

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.