데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

쉐어포인트의 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
1870 백업 미디어 세트에 압축 백업 추가하기 jevida(강성욱) 2016.10.08 1447
1869 Collation에 따른 실행계획 변경과 성능 문제 jevida(강성욱) 2016.10.08 1667
1868 SQL Connection Timeout 디버깅 with BizTalk Server jevida(강성욱) 2016.10.08 2263
1867 인스턴스 파일 초기화 활성 jevida(강성욱) 2016.10.08 1702
1866 누락된 인덱스 확인하기 jevida(강성욱) 2016.10.08 2835
1865 비클러스터 인덱스 페이지 내용 jevida(강성욱) 2016.10.08 2011
1864 ATTACH DATABASE 오류 1314 jevida(강성욱) 2016.10.08 1161
1863 SQL Server 커넥션 풀링 jevida(강성욱) 2016.10.08 4003
1862 가상 SQL Server에 Hot Add vCPU 사용하기 jevida(강성욱) 2016.10.08 1112
1861 DDL 트리거를 활용한 ERRORLOG에 XEVENT 상태 기록하기 jevida(강성욱) 2016.10.08 1347
» 쉐어포인트의 SQL Server 접속 문제 jevida(강성욱) 2016.10.08 1446
1859 Lazy Log Truncation jevida(강성욱) 2016.10.08 1284
1858 인덱스 구성과 상황에 따른 인덱스 성능 jevida(강성욱) 2016.10.08 1461
1857 Max worker thread 초과 이슈 jevida(강성욱) 2016.10.08 2636
1856 SQL Server Failover 클러스터 설치 트러블슈팅 jevida(강성욱) 2016.10.08 2337
1855 MAXDOP 극대화 하기 jevida(강성욱) 2016.10.08 1985
1854 SQL Server 가상화 팁 jevida(강성욱) 2016.10.08 2018
1853 Net Framework 4.0과 SQL Server 2008 설치 오류 jevida(강성욱) 2016.10.08 1838
1852 SQL Server 인덱스 튜닝 접근 jevida(강성욱) 2016.10.07 3428
1851 Sys.dm_os_performance_counter 해석하기 jevida(강성욱) 2016.10.07 2253





XE Login