2016-07-21 13 views
1

아직이 게시물의 일체형 답변 포럼에 대한 의견이 없으므로 여기에 게시하여 공개 여부를 확대하고 있습니다.Unity 5.3.5f 및 SQL Server 2008 R2 : '기존 연결이 원격 호스트에 의해 강제로 닫혔습니다.'

이 질문은 화합 포럼에서 몇 번이지만 내 문제를 해결 한 답변이없는 것으로 보입니다. 단결 5.3.5f, SQL Server 2008 R2 Express (SQL Server 2016을 실행 중이지만 모노 dll은 SQL Server 2008까지만 호환 됨)를 실행 중입니다. 내 자산 폴더에 올바른 모노 dll이 있고 프로젝트에서 올바르게 참조 및 빌드되었습니다. 데이터베이스를 로컬에서 실행하고 있습니다. 나는 SQL Server Management Studio와 Visual Studio 2015를 사용하여 문제없이 잘 연결할 수 있습니다. 방화벽을 완전히 삭제했습니다. 지금 당장 나는 그것을 단일성 내부에서 작동 시키려고 노력하고있다. 또한 SQL Server Management Studio에서 들어오는 연결을 허용하고 SQL Server 구성 관리자에서 tcp/ip를 사용할 수 있는지 확인했습니다.

또한 통합 매뉴얼을 살펴보면 데이터베이스 연결에 대한 설명서가 지금까지 나와 있습니다.

내 코드 :

public string RetrieveTestData(string query) { string sqlConnectionString = "Server=zzzz\\SQLEXPRESS2008;" + "Database=mydb;" + "User ID=sa;" + "Password=mypass;"; 

Debug.Log(sqlConnectionString); 
SqlConnection con = new SqlConnection(sqlConnectionString); 

try 
{ 
    con.Open(); // error thrown here 
    SqlCommand cmd = new SqlCommand(query, con); 
    var fubar = cmd.ExecuteScalar(); 
    con.Close(); 

    return fubar.ToString(); 
} 
catch (Exception ex) 
{ 
    Debug.Log(ex.StackTrace); 
    throw; 
} 

public void TestQuery() 
{ 
    Debug.Log(RetrieveTestData("select top 1 * from dbo.Weapon")); 
} 

내 오류 :이 내 모든 진행 상황을 들고 단일 항목을 그대로

SocketException: An existing connection was forcibly closed by the remote host.

Stack trace:

at System.Net.Sockets.Socket.ReceiveFrom_nochecks_exc (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags, System.Net.EndPoint& remote_end, Boolean throwOnError, System.Int32& error) [0x00000] in :0 at System.Net.Sockets.Socket.ReceiveFrom_nochecks (System.Byte[] buf, Int32 offset, Int32 size, SocketFlags flags, System.Net.EndPoint& remote_end) [0x00000] in :0 at System.Net.Sockets.Socket.ReceiveFrom (System.Byte[] buffer, System.Net.EndPoint& remoteEP) [0x00000] in :0 at System.Net.Sockets.UdpClient.Receive (System.Net.IPEndPoint& remoteEP) [0x00000] in :0 at System.Data.SqlClient.SqlConnection+SqlMonitorSocket.DiscoverTcpPort (Int32 timeoutSeconds) [0x00000] in :0 at System.Data.SqlClient.SqlConnection.DiscoverTcpPortViaSqlMonitor (System.String ServerName, System.String InstanceName) [0x00000] in :0 at System.Data.SqlClient.SqlConnection.ParseDataSource (System.String theDataSource, System.Int32& thePort, System.String& theServerName) [0x00000] in :0 at System.Data.SqlClient.SqlConnection.Open() [0x00000] in :0 at (wrapper remoting-invoke-with-check) System.Data.SqlClient.SqlConnection:Open() at Assets.Scripts.Data.DBBase.RetrieveTestData (System.String query) [0x00013] in C:\Development\Unity\twistedshadowsgame\TwistedShadows\Assets\Scripts\Data\DBBase.cs:23 UnityEngine.Debug:Log(Object) Assets.Scripts.Data.DBBase:RetrieveTestData(String) (at Assets/Scripts/Data/DBBase.cs:35) Assets.Scripts.Data.DBBase:TestQuery() (at Assets/Scripts/Data/DBBase.cs:43) Assets.Scripts.Data.DBBase:Start() (at Assets/Scripts/Data/DBBase.cs:48)

모든 도움에 감사드립니다. 내가 뭔가를 게시하지 않았거나 다른 곳에 게시해야 할 경우 알려 주시기 바랍니다. 차라리 별도의 휴식 서비스를받을 필요가 없습니다. 나는 단결에 역량이 있으며 많은 사람들이 성공적으로 해낸 것처럼 읽었습니다.

미리 감사드립니다. ryan

답변

0

꽤 "게임에 늦었습니다"하지만이 질문에 답을 얻은 적이 있습니다. 올바른 디자인 패턴은 데이터베이스 호출을 만들고 유니티를 통해 해당 서비스를 호출하는 서비스 작성을위한 패턴입니다. db에서 데이터를 가져 와서 어떤 객체를 단일체로 채우려는 다른 누구에게나 이것이 선호되는 패턴입니다.

감사합니다.