Tag Archives: sqlserver

Mendapatkan ip address windows host dari linux guest di WSL 2

saya punya case, mau menghubungkan PHP yang ada di ubuntu di WSL dengan SQLServer yang ada di Windows 10 sebagai host, kita memerlukan ip address windows nya .

berdasarkan artikel ini, ip windows dapat kita lihat di file /etc/resolv.conf , ip tersebut ada pada value dari key “nameserver”.
hal ini fine fine saja untuk keperluan sehari2 yang adhoc.

namun, kalau seperti ini, kita harus mengganti konfigurasi PHP terkait ip address dari SQLServer tadi. tentu hal ini bukan saya banget.

sebagai anak yang sangat malas akhirnya saya mencari cara agar mendapatkan ip tersebut secara otomatis.

cara saya adalah :

  1. membuat variabel pada environtment variabel di apache2
  2. lokasi point 1 ada di /etc/apache2/envvars
  3. isi dari point 2 adalah export win_ip_addr=$(cat /etc/resolv.conf | grep nameserver | tr -d “nameserver “)
  4. lalu di php nya bisa kita manfaatkan fungsi getenv dengan memanggil variabel win_ip_addr tadi

selesai deh 😀

Memberi akses “readonly” sebuah user ke semua database

Ceritanya saya memerlukan sebuah user yang boleh membaca semua database yang sudah ada.
cara nya cukup mudah :

  1. Membuat User di Database tersebut dengan menghungkan ke login tertentu
  2. Memasukkan user tersebut ke dalam group db_datareader

Hal ini tentu mudah jika dilakukan pada 1 database, bagaimana jika kita harus melakukan ke semua database yang ada ?
tentu kita memerlukan script untuk ini.
ya tanpa basa basi lagi
silakan

jangan lupa mengganti kata monitoring dengan nama user yang akan anda berikan akses

Copy atau Transfer Login di SQLServer

untuk pengguna sqlserver on premise, seringkali kita harus melakukan duplikasi user login dikarenakan tidak melakukan setup active directory. jika memang perlu melakukannya silakan ikuti langkah berikut

Transfer logins and passwords between instances – SQL Server | Microsoft Docs

dengan mengikuti langkah tersebut, kita dapat melakukan duplikat login sama persis dengan password nya.

SQLServer database dari no recovery / standby ke recovery mode

biasanya solusi High Avalilability (HA) dan Disaster Recovery (DR) untuk SQLServer saya menggunakan metode paling mudah dan murah yaitu log shipping.

seandainya harus terjadi failover ke salah satu server DR , kita harus membuat database nya menjadi dalam mode recovery. caranya adalah dengan :

RESTORE DATABASE [dbname] WITH RECOVERY

saya catat di blog ini agar saya sendiri tidak lupa 😀

Menghapus isi temporal table pada SQLServer

temporal table sangat membantu saya untuk mentracking data yang berubah. jika anda belum tahu bagaimana cara mudah mengubah sqlserver table menjadi temporal table , anda dapat melihat nya di sini.

sekarang, jika kita sudah menggunakan temporal table, ada kalanya kita ingin menghapus isi dari temporal table tersebut. sayangnya kita tidak dapat menghapus langsung data pada tabel history tersebut. saya sudah membuat script sederhana yang menggenerate query untuk menghapus data tersebut, dapat anda lihat di bawah.

selamat mencoba.

SQLCMD error TCP Provider: Error code 0x2746. Client unable to establish connection

yah dan terjadi lagi.

ceritanya ingin membuat koneksi dari Ubuntu 20.04 LTS ke SQLServer box di windows

kebetulan SQLServer nya versi cukup lama pada Os WIndows server yang cukup lama juga

jika menemukan error seperti itu, tandanya kemungkinan besar bermasalah dengan konfigurasi openssl yang ada di client (ubuntu).

versi nya terlalu tinggi. solusi nya yang sudah saya coba :

1. edit /etc/ssl/openssl.cnf
2. tambahkan di baris pertama sintaks 
    openssl_conf = default_conf
3. diakhir file tambahkan 

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1
CipherString = [email protected]=1

dengan ini akhirnya bisa konek lagi..

Membuat Tabel menjadi Read-Only di SQLServer

seringkali kalau masalah data ini sangat bikin tidur tidak nyenyak. saya sendiri sering dibikin seperti ini. takutnya ada yang gak sengaja mengubah data, atau menghapus dan sebagainya.
untuk melakukan pencatatan hal tersebut saya biasanya mengimplement temporal table, namun temporal table kadang tidak cukup. kita kadang butuh melakukan pemaksaan bahwa tabel hanya boleh dibaca tidak boleh diubah sedikitpun.

teknik favorit saya adalah menambahkan trigger di tabel tersebut, teknik ini cukup simple dan powerfull menurut saya,

silakan dicek script berikut ini, ada script untuk menambah trigger nya, dan juga ada untuk menghapus trigger nya jika dibutuhkan untuk mengubah data pada tabel yang bersangkutan, anda tinggal menggati <table_name> menjadi nama table dan <schema> menjadi schema yang digunakan. Semoga membantu !

Investigasi Problem String or binary data would be truncated

Masalah ini sering kita jumpai di sqlserver saat kita akan mengcopy data dari tabel / query sumber ke tabel tujuan yang memiliki struktur yang berubah di sisi tabel / query sumber. Biasanya sih, dikarenakan panjang karakter nya lebih panjang dari tabel tujuan. Sebenarnya masalah ini sudah clear dan jelas , hanya saja yang tidak jelas kolom mana yang bermasalah. tidak ada error yang lebih detail terhadap hal tersebut. untuk itu , kita perlu untuk mencari kolom yang berubah satu per satu dan ini bisa jadi memakan waktu yang cukup banyak jika jumlah kolom nya banyak sekali.

syukurnya ada script yang dapat memudahkan kita untuk melakukan hal tersebut yaitu script yang membandingkan struktur kolom antara 2 tabel. script nya sebagai berikut :

Untuk menggunakan script ini ada langkah2 yang perlu dilakukan :

1. jalan kan query sumber dan simpan dalam temporary table, bisa memanfaatkan perintah SELECT INTO TABLE

2. jalankan script di atas untuk membandingkan antara temporaray table dengan tabel tujuan

3. hapus tabel temporary

cukup mudah, dan cepat dalam mendeteksi kolom mana yang perlu penanganan