Author Archives: radityopw

Memonitor Progress Backup / Restore Database berukuran besar di SQLServer

Saat mungkin kita perlu me restore database ukuran besar di server lain

kadang kita kuatir apakah database bisa ter restore ?

lalu ditambah lagi dengan boss yang rese sangat perhatian, menanyakan kapan selesai ?

untungnya ada DMV untuk ini

SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time 
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
WHERE r.command in (‘BACKUP DATABASE’,’RESTORE DATABASE’)

dengan DMV di atas kita dapat lihat progress backup / restore database lengkap beserta estimated completion time nya 😀

catatan : untuk menjalankan DMV ini user harus diberi grant view server state

GRANT VIEW SERVER STATE TO [Login_name]

Mengubah UTC time ke Local time di SQLServer

dimulai dari seringnya kerja sama temporal table,

pada temporal tabel, dibutuhkan 2 kolom yang mandatory yang bertujuan mencatat tanggal valid (tanggal awal dan akhir) dari baris pada tabel tersebut. masalahnya adalah tanggal tersebut disimpan dengan UTC timezone.

saat kita akan mengambil data dari tabel tersebut, maka kolom tanggal tersebut , maka tanggal yang tertampil adalah tanggal dengan timezone UTC , ini tentu jadi masalah, maka untuk itu perlu dilakukan pengubahan ke local time.

untuk melakukan pengubahan tersebut, untungnya ada yang pernah mengalami dan udah ada solusinya , yaitu dengan query gotak gatuk logi semacam ini

(SELECT DATEADD(MILLISECOND,DATEDIFF(MILLISECOND,getutcdate(),GETDATE()),<nama kolom yang ingin diubah>))

nah itu aja catatan hari ini… 😀

happy querying

Menemukan Kolom pada Tabel yang memiliki nilai NULL di SQLServer

salah satu hal yang perlu kita cek dalam melakukan data cleaning adalah mengurusi null value pada data.

bagaimana menghandle null value tentu tidak dibahas di blog ini, karena ane memang gak minat dan gak ada kemampuan :D, yang dibahas di blog ini adalah bagaimana cara kita menemukannya di hutan belantara database .

going basic

cara simple nya kan kita bisa pakai

SELECT count(*) FROM <TABEL> WHERE <KOLOM> IS NULL

dari query simple kayak gitu kita bisa tahu apa kah ada data yang NULL pada kolom tersebut.

masalah muncul kalau kita mau melakukan check lebih dari 1 kolom, dan tidak bermaksud menambah masalah mu, bagaimana kalau yang dicek lebih dari 1 tabel ?
beruntunglah nemu blog
https://www.daimto.com/sql-server-finding-columns-with-null-values/

 set nocount on
declare @columnName nvarchar(500)
declare @tableName nvarchar(500)
declare @select nvarchar(500)
declare @sql nvarchar(500)
-- check if the Temp table already exists
if OBJECT_ID('tempdb..#LocalTempTable') is null
Begin
CREATE TABLE #LocalTempTable(
TableName varchar(150),
ColumnName varchar(150))
end
else
begin
delete from #LocalTempTable;
end
-- Build a select for each of the columns in the database. That checks for nulls
DECLARE check_cursor CURSOR FOR
select column_name, table_name, concat(' Select ''',column_name,''',''',table_name,''[' from ',table_name,'] where [',COLUMN_NAME,'] is null')
from INFORMATION_SCHEMA.COLUMNS
WHERE table_name IN ('')
OPEN check_cursor
FETCH NEXT FROM check_cursor
INTO @columnName, @tableName,@select
WHILE @@FETCH_STATUS = 0
BEGIN
-- Insert it if there if it exists.
set @sql = 'insert into #LocalTempTable (ColumnName, TableName)' + @select
print @sql
-- Run the statment
exec( @sql)
FETCH NEXT FROM check_cursor
INTO @columnName, @tableName,@select
end
CLOSE check_cursor;
DEALLOCATE check_cursor;
select distinct ColumnName, TableName from #LocalTempTable

dengan query sakti ini kita bisa cek apakah ada data yang nilainya NULL untuk SEMUA kolom pada tabel yang kita inginkan..

itu aja sih, semoga bermanfaat