Desember 4

Mencari Posisi SSIS pada SQL Server

Siang yang cerah untuk melakukan testing UAT SSIS (maklum di kantor saya sedang ada migrasi DTS ke SSIS). Ternyata SSIS yang saya testing tidak ada dalam folder yang ada dalam list. Saya pun disuruh untuk mencari di semua folder (alamak, banyak banget foldernya). Setelah tanya ke paman googling akhirnya saya menemukan query untuk mencari lokasi SSIS dengan mudah. Berikut querynya :

Mudah-mudahan query tersebut juga membantu teman-teman yang sedang melakukan kegiatan sama dengan saya. Selamat beraktifitas. 😀

Oktober 31

Disable/Enable Developer Options pada Android

Di malam minggu ini mungkin menjadi malam yang sangat biasa untuk developer seperti saya ini, saya masih harus bermain dengan Android Studio, hiks..hiks… :'(

Oke, saya melanjutkan latihan saya dengan Android Studio, tapi saat saya ingin testing, loh kok Device saya tidak terlihat? (di sini saya ingin testing dengan langsung ke smartphone saya. Saya menggunakan Xiaomi Redmi 2 dan Lenovo A3300) Setelah bertanya kepada Paman Google, akhirnya saya menemukan cara agar device saya tampil saat hendak Debug dan Running aplikasi saya. Ternyata Android menyediakan fasilitas untuk enable/disable opsi untuk developer. Berikut langkah-langkah yang dilakukan :

A. Enable Developer Options

  1. Masuk ke menu Setting, pilih About Phone untuk Smartphone (contoh Xiaomi saya) dan About Tablet untuk Tablet (contoh Lenovo saya).

About PhoneXiaomi Redmi 2

About TabletLenovo A3300

  1. Setelah masuk menu, saya tap/sentuh 7 kali MIUI version (Xiaomi) dan Hardware version (Lenovo) atau sesuaikan dengan yang ada pada Smartphone/Tablet kamu. Mungkin bisa mencobanya dengan tap 7 kali pada setiap pilihan.

MIUI versionXiaomi Redmi 2

Hardware VersionLenovo A3300

  1. Maka Developer Options akan tampil pada menu Setting. Pastikan USB Debugging di set On agar dapat terbaca Android Studio.

Developer OptionsXiaomi Redmi 2

Developer Options LenovoLenovo A3300

B. Disable Developer Options

1. Pada menu Setting, pilih Appl. Cari aplikasi Setting.

Apl XiaomiXiaomi Redmi 2

Apl LenovoLenovo A3300

2. Pilih Clear Data. Bila tampil pertanyaan, pilih Ok.

Clear Data XiaomiXiaomi Redmi 2

Clear Data LenovoLenovo A3300

3. Maka Developer Options akan hilang pada menu Setting.

Hide Developer Options XiaomiXiaomi Redmi 2

Hide Developer Options LenovoLenovo A3300

Begitulah solusi yang saya dapatkan. Mudah-mudah sharing ini bermanfaat dan Selamat berkoding ria.. 😀

Oktober 17

Error 18456 saat login SQL Server

Sore telah tiba, namun saat mau coding sambil menikmati kopi hangat dengan komputer kantor (komputer saya kebetulan sedang error), tiba-tiba tampil error saat mau login menggunakan User ID yang telah saya buat di SQL Server. Tampilan errornya kira2 seperti ini :

Error 18456

Kok bisa tampil error Login failed padahal sudah saya granting user tersebut dengan benar. Setelah mencari cara, akhirnya saya menemukan solusinya. Error tersebut terjadi karena SQL Server (servicenya yang saya maksud di sini) yang kita punya masih di setting Security Windows Authentication mode. Adapun langkah-langkah yang saya lakukan agar saya bisa login menggunakan User yang telah saya buat sebagai berikut :

  1. Lakukan login dengan menggunakan Windows Authentication pada SQL Server (SSMS).

  2. Klik kanan pada SQL Server. Pilih Properties.

Properties SQL Server

  1. Pada bagian Security, kita pindahkan ke mode SQL Server and Windows Authentication mode.

Security

  1. Restart Service SQL Server kemudian login kembali dengan User ID yang telah kita buat.

Service

Restart Service

Mudah-mudahan langkah ini bisa menolong teman-teman yang mengalami masalah yang sama. Selamat mencoba. 😀

Agustus 10

Download APK Android di PC

Siang yang cerah untuk berbagi. Pada hari ini, kebetulan saya sedang tidak terlalu sibuk di kantor (tidak ada kerjaan,hehe), saya bingung mau melakukan apa. Kebetulan saya sedang membawa tablet kesayangan dan saya ingat saat di kereta (angkutan umum andalan) saya tidak dapat melihat subtitle dari film kesayangan saya saat memainkannya. Setelah sampai kantor, saya langsung men-download apk dari software android untuk memutar film yakni “VLC for Android”. Adapun langkah-langkah yang saya lakukan sebagai berikut :

  1. Buka website google play dan cari software yang diinginkan (VLC for Android) :

Search VLC

Klik VLC

 

  1. Copy-kan alamat halaman aplikasi yang kita buka

Copy Link

  1. Buka alamat website http://apps.evozi.com/apk-downloader/ kemudian paste-kan alamat yang telah kita copy ke bagian Package name or Google Play URL :

Evozi

Paste Link

  1. Klik Generate Download Link :

  2. Setelah tampil tombol Click here to download …. now berwarna hijau, klik tombol tersebut untuk mendownload APK yang diinginkan :

Download APK

  1. Copy-kan APK yang telah di-download tadi ke dalam tablet atau smartphone android kemudian Install.

Demikian cara saya untuk men-download APK aplikasi android yang sering saya lakukan. Dengan menggunakan cara ini kita akan berhemat kuota internet jika suatu hari kita ingin menginstal ulang aplikasi yang telah dihapus di tablet ataupun smartphone kita. Mudah-mudahan bermanfaat untuk teman-teman.

Juli 20

Shortcut menulis bahasa Arab dan tulisan Al-Quran

Taqabbalallahu Minna Wa Minkum. Mudah2an segala amal kebaikan kita diterima ALLAH SWT. Mungkin ini doa yang pertama dalam rangka Hari Raya Idul Fitri. Untuk menulis di microsoft Word mungkin sesuatu hal yang tidaklah asing bagi kita. Namun, kita tidak akan mengetahui kalau ternyata ada banyak shortcut tersembunyi yang tidak kita ketahui. Kali ini saya ingin membagikan beberapa shorcut yang jarang sekali kita ketahui namun akan sangat bermanfaat untuk penulisan berbagai tulisan/artikel Islam Insya ALLAH. Berikut listnya :

Fdfd ==> alt+x
Fdfa ==> alt+x
Fdfb ==> alt+x
Fdf2 ==> alt+x
Fdf3 ==> alt+x
Fdf4 ==> alt+x
Fdf5 ==> alt+x
Fdf6 ==> alt+x
Fdf7 ==> alt+x
Fdf8 ==> alt+x
Fdf9 ==> alt+x
Fdf0 ==> alt+x

Mudah2an sedikit info tentang shorcut-shortcut yang mungkin sangat bermanfaat… 😀

Juni 18

Table Variable, Global Table Temporary, dan Local Table Temporary

Marhaban Yaa Ramadhan…

Bulan penuh berkah telah tiba. Pada hari pertama di bulan penuh berkah ini, saya akan menjelaskan table variable dan table temporary. Apa itu table variable dan table temporary?

Mungkin teman-teman sudah tidak asing dengan kata-kata table. Yuph, table merupakan tempat untuk penyimpanan data berupa baris dan kolom. Lalu apa yang dimaksud table variable dan table temporary? Apa perbedaan table biasa dalam database dengan table variable dan table temporary? Mungkin untuk membedakan keduanya akan saya urai satu persatu.

1. Table Variable

Table variable merupakan table yang dideklarasikan seperti halnya variable. Penggunaannya biasanya dipakai untuk menyimpan data sementara yang membutuhkan tampungan data seperti sebuah table. Table variable hanya dapat digunakan dalam satu koneksi data (biasanya dalam satu stored procedure) dan satu kali execute. Untuk mendeklarasikan table variable (karena seperti variable, table variable dideklarasikan, bukan di-create), digunakan kata kunci DECLARE dan diberi @ (a keong) sebagai nama variable serta TABLE sebagai tipe datanya. Contoh penggunaan table variable :

Jika kita execute query di atas, maka akan menghasilkan data seperti berikut :

Table Variable

2. Table Temporary

Table temporary sebenarnya hampir sama seperti table variable, namun table temporary dapat digunakan untuk beberapa kali execute. Proses create table temporary dapat dilakukan dengan query SELECT… INTO… selain dengan query CREATE seperti pembuatan table umumnya. Table temporary sendiri dibagi menjadi dua, global dan local table temporary.

  • Local Table Temporary

Local table temporary ditandai dengan kres satu (#). Local table temporary hanya dapat digunakan hanya dalam satu session. Jika kita meng-create local table temporary dalam suatu session, kemudian kita lakukan proses insert, update, maupun delete pada session yang lain maka akan menyebabkan error. Contoh penggunaan Local Table Temporary :

Jika kita execute query di atas, maka akan menghasilkan data seperti berikut :

Local Table Temporary

  • Global Table Temporary

Global table temporary ditandai dengan dua kres (##). Global table temporary dapat digunakan dalam semua session. Jika kita meng-create global table temporary dalam suatu session, maka kita dapat melakukan proses insert, update, maupun delete pada session yang lain. Contoh penggunaan Global Table Temporary :

Jika kita execute query di atas, maka akan menghasilkan data seperti berikut :

Global Table Temporary

Untuk perlu diingat, baik table variable maupun table temporary, pada saat deklarasi maupun create, keduanya akan ter-create secara fisik pada database tempdb pada System Database. Namun untuk table variable, tabel fisik akan otomatis hilang/dihapus (biasanya saat proses eksekusi telah selesai dilakukan). Namun, untuk table temporary, table fisik hanya akan terhapus bila kita melakukan DROP TABLE terhadap table tersebut. Bila kita menjalankan query berikut :

atau :

atau :

Saat kita eksekusi query tersebut, kita akan melihat bahwa object pada database tempdb akan bertambah

Hasil Create

Dari penjelasan di atas, ada beberapa hal penting mengenai table variable dan table temporary yang perlu diperhatikan :

1. Table variables tidak dapat digunakan dalam proses TRANSACTION (dengan query BEGIN TRAN/BEGIN TRANSACTION) sehingga tidak dapat dilakukan proses ROLLBACK.

  1. Perlu diperhatikan untuk melakukan DROP TABLE terhadap table temporary dikarenakan table tersebut akan tetap tersimpan dalam database master dan tentunya akan memperbesar kapasitas database.

Demikian penjelasan singkat mengenai table variable dan table temporary dari saya. Bila ada yang ingin ditambahkan bisa diisi pada kolom komentar. Akhir kata, saya mengucapkan Selamat berpuasa. Semoga segala puasa dan amal ibadah kita diterima ALLAH SWT dan segala sesuatunya menjadi keberkahan untuk kita. Amin… 😀

Juni 15

INSERT INTO … VALUES … , INSERT INTO …. SELECT, dan SELECT … INTO ….

Pagi hari yang cerah ini, saat yang tepat untuk berbagi,hehe….

Kali ini saya ingin menjelaskan tentang 3 pola query insert (untuk SQL Server) yang sering digunakan untuk menginputkan data. Mungkin teman-teman sudah tidak asing menggunakan pola INSERT INTO. Dalam penggunaannya ternyata memiliki pola yang lain untuk keperluan yang berbeda. Baik, saya langsung jelaskan satu persatu, namun sebelumnya saya asumsikan teman-teman telah memiliki tabel barang dan produk yang ada pada artikel Menyimpan hasil insert yang disimpan ke suatu tabel dari suatu tabel ke dalam tabel lain.

1. INSERT INTO … VALUES …

Untuk query ini, tentunya teman-teman sudah biasa menggunakannya. Query ini digunakan untuk menginput data ke database baik satu atau lebih dari suatu inputan. Misalnya, kita ingin menambahkan data ke tabel barang dengan kode_barang=C021,kode_gudang=G01B,nama_barang=Mi Instan. Maka kita dapat membuat query seperti berikut :

Atau kita ingin menambahkan dua buah data ke tabel barang dengan kode_barang=C022,kode_gudang=G01B,nama_barang=Kopi dan kode_barang=C023,kode_gudang=G01B,nama_barang=Kopi Luwak. Maka kita dapat membuat query seperti berikut :

2. INSERT INTO …. SELECT

Untuk query yang satu ini biasanya digunakan untuk menyimpan data ke tabel dari tabel yang lain (baik itu tabel lokal, table variable, maupun table temporary). Misalnya, kita ingin memasukkan semua data yang memiliki kode gudang G01B pada tabel barang ke dalam tabel produk. Maka kita dapat membuat query seperti berikut :

Walaupun query ini sebenarnya dapat digunakan untuk memasukkan data dari suatu inputan (namun hanya terbatas satu inputan saja). Misalnya kita ingin menambahkan data ke tabel barang dengan kode_barang=C024,kode_gudang=G01B,nama_barang=Teh Botol. Maka kita dapat membuat query seperti berikut :

3. SELECT … INTO ….

Untuk query yang satu ini dapat kita gunakan untuk menginput data dari suatu tabel ke tabel yang lain, namun tabel tujuan belum ada/belum di-create. Biasanya query ini digunakan pada saat migrasi data maupun saat kita memerlukan sebuah tabel untuk tempat menampung data sementara dari suatu tabel. Tabel yang ter-create dari query ini akan memiliki properties yang sama persis dengan tabel sumber, baik dari jumlah kolom, tipe data kolom-kolomnya, dan lain-lainnya. Namun, tabel tujuan yang dapat di-create hanya tabel lokal dan table temporary saja (table variable tidak bisa menggunakan query ini). Misalnya, kita ingin memasukkan tabel barang ke tabel lain sebagai tempat menampung data sementara dengan spesifikasi tabel yang sama dengan tabel barang. Maka kita dapat membuat query seperti berikut :

  • Tabel tujuan adalah tabel fisik :
  • Tabel tujuan adalah tabel temporary global :
  • Tabel tujuan adalah tabel temporary local :

Demikian penjelasan singkat mengenai 3 pola query untuk Insert data ini. Mudah-mudahan bermanfaat, selamat berkerja… 😀

Juni 12

Generate query menggunakan Excel

Pada suatu hari, Bayu mendapat tugas untuk memasukkan data dari sebuah excel ke dalam database untuk keperluan aplikasi. Sementara dalam aplikasi tersebut tidak terdapat fasilitas untuk mengupload data Excel ke dalamnya. Lalu, bagaimana cara Bayu melakukannya? Apa Bayu harus menulis query insert untuk setiap datanya?

Pada kasus seperti di atas mungkin banyak teman-teman juga yang mengalaminya. Mungkin ada yang berpikiran menulis query untuk semua data. Untuk jumlah data yang sedikit mungkin bukan hal yang jadi masalah. Namun, bagaimana bila data tersebut terdiri dari puluhan atau ratusan data? Akan membutuhkan waktu yang sangat lama dan ini menjadi tidak efisien.

Pada kali ini, saya akan membagikan cara yang mungkin efektif dengan menggunakan Excel. Saya tidak menyebutkan detail Excel tersebut, teman-teman bisa menggunakan Microsoft Excel maupun software spreadsheet lainnya. Tapi untuk artikel ini, saya menggunakan Microsoft Excel 2013 (karena di laptop kantor terinstal Ms. Excel 2013,hehe..) dan database SQL Server 2008 R sebagai latihan. Untuk file Excel, teman-teman bisa download file Excelnya di : ProvinsiKabupaten.xls. Untuk tabel databasenya, teman-teman bisa create menggunakan query berikut :

Kita akan mencoba memasukkan data provinsi ke tabel provinsi. Berikut langkah-langkahnya :

  • Kita buka file Excel tersebut dan kita blok kolom D2 – D32.

BlockD

  • Ketikkan pada kolom Formula dengan formula berikut

=”INSERT INTO [Indonesia].[dbo].[tblProvinsi] ([Id_Provinsi], [Nama_Provinsi]) VALUES (‘” & A2 & “‘, ‘” & B2 & “‘)”

seperti berikut :

Concat1

Atau bisa memanfaatkan fungsi CONCATENATE pada excel dengan rumus

=CONCATENATE(“INSERT INTO [Indonesia].[dbo].[tblProvinsi] ([Id_Provinsi], [Nama_Provinsi]) VALUES (‘”,A2,”‘, ‘”,B2,”‘)”)

seperti berikut :

Concat2

  • Kemudian tekan Ctrl + Enter. Maka script pun siap kita eksekusi di SQL Server.

  • Kita Copy kolom tersebut.

CopyGenerateD

  • Kita buka Sql Server. Paste-kan query yang tadi kita copy. Di sini saya tambahkan Begin Transaction agar proses Rollback saat tengah jalan ada yang salah dengan querynya.

Query1

Query2

  • Execute script tersebut. Maka data telah masuk dalam tabel Provinsi.

Hasil

Kita dapat melakukan hal serupa dengan kabupaten. Teman-teman bisa mencobanya. Untuk kasus yang lain hanya menyesuaikan query yang ingin dibuatnya. Generate ini tidak terbatas hanya untuk query Insert saja. Update, Delete, maupun query lainnya bisa diterapkan dengan cara ini tergantung dari kebutuhan yang diinginkan dan kasus yang terjadi. Bagaimana?? Mudah kan?? Selamat bekerja 😀

Juni 11

Menyimpan hasil insert yang disimpan ke suatu tabel dari suatu tabel ke dalam tabel lain

Pada siang hari yang cerah ini saya akan membagikan ilmu baru (karena saya pun baru mengetahuinya sambil menunggu pekerjaan baru). Apa itu?? Mungkin teman-teman pernah mengalami hal yang sama dengan kasus yang pernah saya alami. Suatu ketika teman-teman diharuskan memasukkan data ke suatu tabel (input data) dengan jumlah data yang sangat besar, namun saat proses insert data tersebut gagal di tengah proses (entah oleh data yang tidak valid ataupun koneksi yang terputus) dan tidak diperbolehkan proses Rollback data tetapi user ingin mengetahui data apa saya yang telah berhasil ter-insert dalam tabel tersebut. Mungkin solusi pertama kita bisa buat sebuah flag dalam tabel tersebut dimana flag tersebut diupdate saat semua proses insert berhasil dilakukan sampai selesai. Tetapi bila ternyata tabel tersebut tidak ada kolom untuk tempat flag dan kita tidak diperkenankan menambah kolom dari tabel tersebut, maka solusi berikut mungkin akan sangat berguna untuk menyelesaikan kasus tersebut. Lalu, apa solusinya?? Apa querynya??

Kita bisa menggunakan pola script berikut :

[sourcecode language=”sql”]
INSERT [tabel_tujuan]
OUTPUT INSERTED.*
INTO [tabel_monitor]
SELECT *
FROM [tabel_sumber]
[/sourcecode]

dimana :

tabel_tujuan = tabel yang akan di-insert

tabel_monitor = tabel tempat untuk menyimpan data yang berhasil diinsert selama proses (bisa berupa table temporary maupun table variable. Penjelasan keduanya insya ALLAH akan saya jelaskan di lain kesempatan)

tabel_sumber = tabel yang menjadi sumber data untuk diinsert

Sebagai latihan, kita bisa menggunakan tabel-tabel pada artikel berikut Join pada SQL Server. Di sini kita akan menggunakan tabel barang sebagai latihan kita. Lalu tambahkan tabel produk menggunakan script berikut :

[sourcecode language=”sql”]
USE [produksi]

CREATE TABLE [dbo].[produk] (
[kode_produk] varchar NOT NULL,
[kode_gudang] varchar NULL,
[nama_produk] varchar NULL,
CONSTRAINT [PK_produk] PRIMARY KEY CLUSTERED ([kode_produk] ASC) WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY],
CONSTRAINT [IX_produk] UNIQUE NONCLUSTERED ([kode_produk] ASC) WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
[/sourcecode]

Kemudian kita coba untuk melihat data hasil insert dengan query berikut :

[sourcecode language=”sql”]
DECLARE @produk_inserted TABLE (
[kode_produk] varchar NOT NULL,
[kode_gudang] varchar NULL,
[nama_produk] varchar NULL
)

INSERT produk
OUTPUT INSERTED.*
INTO @produk_inserted
SELECT *
FROM barang
[/sourcecode]

Di sini saya menggunakan table variable sebagai penampung data hasil insert. Saat terjadi masalah saat proses di atas berlangsung, kita dapat melihat data apa saja yang berhasil di-insert dengan select pada table variable.

[sourcecode language=”sql”]
SELECT *
FROM @produk_inserted
[/sourcecode]

Demikian artikel singkat ini, mudah2an bermanfaat… 😀

 

April 6

Merapikan Query di SQL Server

SQL Beautifier / SQL Formatter merupakan suatu tools untuk merapikan dan mempercantik query SQL yang sudah kita buat. Mengapa kita memerlukan SQL Beautifier?

Ketika kita sedang menuliskan sebuah query baik itu untuk membuat sebuah stored procedure, view, trigger, function, ataupun query biasa, terkadang kita kurang terlalu memperhatikan kerapihan penulisan query tersebut dan menjadi hal yang sangat merepotkan kalau kita menulis query dan merapikannya sekaligus. Dan hasilnya, bisa jadi seperti query berikut :

Mungkin untuk query di atas kita masih dapat membacanya, namun apabila query tersebut berisi dari ratusan ataupun ribuan baris, mungkin akan sangat merepotkan saat maintenance query tersebut.

Kali ini saya ingin men-share tools gratis yang bisa teman-teman dapatkan. Benar-benar gratis loh teman-teman. Tools tersebut dapat digunakan sebagai Add-In untuk Microsoft SQL Server Management Studio, plugin Notepad++, maupun dapat digunakan sebagai aplikasi portable. Namanya Poor Man’s T-SQL Formatter. Untuk download, teman-teman dapat men-downloadnya dari halaman resminya langsung :

http://architectshack.com/PoorMansTSqlFormatter.ashx

Untuk saya sendiri, saya lebih suka menggunakannya sebagai Add-In Microsoft SQL Server Management Studio (karena di lingkungan kerja saya menggunakan SQL Server,hihi). Setelah query yang saya contohkan di atas dirapikan, hasilnya akan terlihat seperti ini :

Bagaimana? Lebih mudah dibaca kan?

Mungkin sekian sharing saya, mudah-mudahn bermanfaat.
B