쉐어포인트의 SQL Server 접속 문제

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014

 

SQL Server 2014 버전에서 SharePoint 서버가 접속하지 못하는 문제가 발생하였다. (결론적으로 버전의 문제는 아니다.) 어떤 사례인지 다음 포스트를 통해 알아 보자.

 

이번 포스트는 CSS SQL Server Engineer 팀 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 정리 하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다.

 

SQL Server 2014 CTP 버전에서 쉐어포인트 2013을 구성할 때 연결 문제가 발생 하였다. 발생한 에러는 데이터베이스를 생성하려고 할 때 발생 하였다.

Exception: System.ArgumentException: myserver,50000 is an invalid or loopback address. Specify a valid server address.
at Microsoft.SharePoint.Administration.SPServer.ValidateAddress(String address)
at Microsoft.SharePoint.Administration.SPServer..ctor(String address, SPFarm farm, Guid id)
at Microsoft.SharePoint.Administration.SPConfigurationDatabase.RegisterDefaultDatabaseServices(SqlConnectionStringBuilder connectionString)
at Microsoft.SharePoint.Administration.SPConfigurationDatabase.Provision(SqlConnectionStringBuilder connectionString)
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, IdentityType identityType, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
at Microsoft.SharePoint.Administration.SPFarm.Create(SqlConnectionStringBuilder configurationDatabase, SqlConnectionStringBuilder administrationContentDatabase, String farmUser, SecureString farmPassword, SecureString masterPassphrase)
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.CreateOrConnectConfigDb()
at Microsoft.SharePoint.PostSetupConfiguration.ConfigurationDatabaseTask.Run()
at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

 

이 문제는 예전에도 충돌이 있었으며 SQL 별칭을 만들어 문제를 해결하였다. 그러나 이번엔 작동하지 않았다.

 

이 문제에 대해서 몇 가지 레퍼런스 코멘트에서는 SQL Server의 기본 포트인 1433을 사용하지 않도록 지시하고 있었다. 일부 쉐어포인트 문서에서는 SQL 포트를 변경하는 방법과 별칭을 만드는 방법을 보여 주었다. 하지만 사실적인 문제에 대한 이유는 찾을 수 없었다.

 

이 문제는 SQL Server 2014와는 전혀 상관이 없었으며 모든 SQL Server 버전에서 발생 할 수 있다. 이 이슈는 쉐어포인트에서 볼 수 있다. 어떠한 서버 이름이라도 유효하도록 DNS에 추가해야 한다. 기본포트(1433)을 사용하지 말고 별칭을 만들어야 한다. 별칭을 만들 때 DNS에 존재하지 않는 이름이어야 한다. 그렇지 않으면 동일한 오류가 발생 한다.

 

처음 오류 보고는 다음과 같았다. 다음 오류는 쉐어포인트 오류이며 SQL Server 오류가 아니다.

Exception: System.ArgumentException: myserver,50000 is an invalid or loopback address. Specify a valid server address.
at Microsoft.SharePoint.Administration.SPServer.ValidateAddress(String address)

 

SPServer.ValidateAddress 가 호출 된 경우 Argument Exception이 발생 하였다. justDecompile(http://www.telerik.com/products/decompiler.aspx)라는 닷넷 도구를 사용하여 문제를 확인 한다.

Microsoft.SharePoint 어셈블리에서 Administration 네임스페이스를 확인 할 수 있다..

 

여기에서 SPServer객체와 유효한 주소 메서드를 요청한다.

 

 

internal static void ValidateAddress(string address)
{
Uri uri;
if (address == null)
{

throw new ArgumentNullException("address");

}

UriHostNameType uriHostNameType = Uri.CheckHostName(address); <-- This is what gets us into trouble
if (uriHostNameType == UriHostNameType.Unknown)
{
object[] objArray = new object[] { address };
throw new ArgumentException(SPResource.GetString("InvalidServerAddress", objArray)); <-- The exception will be thrown here
}

uri = (uriHostNameType != UriHostNameType.IPv6 ||
address.Length <= 0 ||
address[0] == '[' ||
address[address.Length - 1] == ']' ?
new Uri(string.Concat("http://", address)) : new Uri(string.Concat("http://[", address, "]")));
if (uri.IsLoopback)
{

object[] objArray1 = new object[] { address };
throw new ArgumentException(SPResource.GetString("InvalidServerAddress", objArray1));
}
}

 

 

Uri.CheckHostName 메서드에서 유효한 DNS이름이 있는지 확인한다.

 

Uri.CheckHostName Methiod :

http://msdn.microsoft.com/en-us/library/system.uri.checkhostname.aspx

 

 

전달하려는 문자열이 DNS에 없는 경우 실패 한다.

 

 

[참고자료]

http://msdn.microsoft.com/en-us/library/system.uri.checkhostname.aspx

 

 

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 87
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 23
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
1863 SQL Server 커넥션 풀링 jevida(강성욱) 2016.10.08 4307
1862 가상 SQL Server에 Hot Add vCPU 사용하기 jevida(강성욱) 2016.10.08 1132
1861 DDL 트리거를 활용한 ERRORLOG에 XEVENT 상태 기록하기 jevida(강성욱) 2016.10.08 1367
» 쉐어포인트의 SQL Server 접속 문제 jevida(강성욱) 2016.10.08 1473
1859 Lazy Log Truncation jevida(강성욱) 2016.10.08 1338
1858 인덱스 구성과 상황에 따른 인덱스 성능 jevida(강성욱) 2016.10.08 1489
1857 Max worker thread 초과 이슈 jevida(강성욱) 2016.10.08 2816
1856 SQL Server Failover 클러스터 설치 트러블슈팅 jevida(강성욱) 2016.10.08 2383
1855 MAXDOP 극대화 하기 jevida(강성욱) 2016.10.08 2156
1854 SQL Server 가상화 팁 jevida(강성욱) 2016.10.08 2041
1853 Net Framework 4.0과 SQL Server 2008 설치 오류 jevida(강성욱) 2016.10.08 1868
1852 SQL Server 인덱스 튜닝 접근 jevida(강성욱) 2016.10.07 3496
1851 Sys.dm_os_performance_counter 해석하기 jevida(강성욱) 2016.10.07 2380
1850 프로파일러를 이용한 중첩된 프로시저 디버깅 jevida(강성욱) 2016.10.07 1610
1849 SAN 스토리지 성능 모니터 - SAN 스토리지를 사용하는 경우 성능 카운터를 어떻게 모니터링 할까? jevida(강성욱) 2016.10.07 1777
1848 저장된 Plan Cache 확인 및 활용 jevida(강성욱) 2016.10.07 4701
1847 Xp_fixeddrives 세부 정보 확인하기 jevida(강성욱) 2016.10.07 1833
1846 강제 매개변수화로 인한 성능 저하 사례 jevida(강성욱) 2016.10.07 1593
1845 파라메터 스니핑과 데이터 스큐 jevida(강성욱) 2016.10.07 1548
1844 DBCC CHECKDB 버그 및 해결 방법 jevida(강성욱) 2016.10.07 1571





XE Login

테스트 팝업
Close