Pentingnya test connection saat pertama kali deploy applikasi

 on Saturday, January 16, 2016  

Well, saya punya pengalaman nih. tepatnya td saat deploy win application. seminggu sebelumnya saya ngambil freelance di sebuah perusahaan percetakan. buat interfacing hardware. setelah di analisa, ternyata yang di butuhkan sebetulnya cuma import file csv aja si. kemudian dibuatlah aplikasi dengan dotnet framework 2.0 (C# as language)

applikasi existing menggunakan vb6 masa lalu dengan sql server 2000 sebagai databasenya. saya kira itu pasangan yang serasi di tahun dahulu kala. namun sekarang vb6 sudah end of service dari mikocok. sql server 2000 pun sudah ketinggalan jauh.

Saya sudah bilang ke ownernya. jika applikasi existing sudah waktunya upgrade. oleh karena biaya dan waktu serta resource yang belum ada. akhirnya dia putuskan untuk freelance ke saya. (begitu ceritanya)

jreeeng!!! sehari, dua hari aplikasih sudah selesai. dimana dotnet 2.0 saya pakek. Native component yang saya pake. saya menggunakan system.data.SqlClient.

Pass saat deploy.. eng ing eng.!!!! aplikasi gak konek2 ke sql svr 2000. saya coba segala connstring dari internet. juga gak bisa konek. awalnya errornya bginian

==================================================================
System.Exception: Connection failed [Server=xxxxDB;Database=TEST;User Id=sa;Password=pwd12;] ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at DataAccess.DataContext.Open()
   --- End of inner exception stack trace ---
   at dta.xxxx.OPNAMItem.Insert(List`1 list, String username)
   at xxxx.Logic.Imports.Execute(List`1 list, String username)
 For more information, see Help and Support Center at
==================================================================

Tentu saja itu kagak bisa open koneksi. di cobalah semua connstring yang bisa di pake untuk sql server 2000. hingga 1 jam - 2 jam tak kunjung berubah. akhir saya nyantai dulu sebentar.. nyoba sekali lagi saya restart pc servernya. nah kali ini errornya beda. mungkin karena sumpeknya saya sudah berasumsi bahwa error tersebut masih di area tidak bisa konek open. saya tinggallah pulang. ini kemarin kejadiannya.

Nah... pas td pagi. saya terbesit dalam benak.. kenapa gak di test koneksi dulu. kemudian test select query kemudian test save data dan sebagainya. maksud saya, saya uraikan satu2 errornya karena dalam hal ini server gak boleh di install visual studio dan hanya beleh di install app aja.

akhirnya dibuatlah form untuk test konneksi.. apa yang terjadi coba? hahaha... ternyata open keneksi OK. kenapa tidak bisa tersave alias selalu gagal.? ada hal lain yang sudah saya resolved tp yang jelas. saya telah membuang2 waktu hanya untuk mengetahui database sql 2000 bisa di akses pake native dotnet code atau tidak... coba dari awal saya sudah bikin test koneksi.. mungkin sy tidak harus menghabiskan sehari 2 hari untuk mengetahui betapa dotnet native code bisa mengakses sql server 2000 dengan mudah tanpa komponent pembantu.... dengan mudah.. seriously.

jika anda mengalami kesusahan untuk akses sql server 2000 menggunakan dotnet. baca ini sebagai renungan

The best way is to use ADO.NET which should work just fine. You should absolutely stay away from the ODBC route:

==================================================================
using (var conn = new SqlConnection("Data Source=mySql200Server;Initial Catalog=myDataBase;User Id=user;Password=secret;"))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "SELECT count(*) FROM foo";
    var result = cmd.ExecuteScalar();
}
==================================================================

If this doesn't work here are the things to check:

Your connection string is correct (serverName/database/username/password)
You have access to the SQL server from within your ASP.NET server (verify network and firewall)
Your SQL query is correct

Salam hangat dari freelancer dotnet1235
Pentingnya test connection saat pertama kali deploy applikasi 4.5 5 .NET-1235 Saturday, January 16, 2016 Well, saya punya pengalaman nih. tepatnya td saat deploy win application. seminggu sebelumnya saya ngambil freelance di sebuah perusahaan pe...


No comments:

Post a Comment

Copyright © .Net-1235. All Rights Reserved.