SQL 2012 Hosting Indonesia –Jaringan Hosting.Com :: Cara Membuat Cron Job untuk backup SQL Database

Pada postingan kali ini kami akan membahas mengenai cara membuat Cron Job untuk keperluan backup SQL Database. Cron jobs digunakan sebagai scheduling task untuk tugas tugas yang berjalan di dalam server. Biasanya cron jobs digunakan untuk otomatisasi pemeliharaan system dan administrasi. Akan tetapi cron jobs juga relevan jika digunakan untuk keperluan pengembangan aplikasi web. Ada beberapa situasi ketika aplikasi web membutuhkan berbagai task untuk berkerja secara periodik. Cron job/scheduled task merupakan tugas otomatis dalam system yang bisa di atur untuk menjalankan sebanyak apapun pada jarak tertentu. Cron/scheduled task memungkinkan anda untuk menjadwalkan perintah ataupun script untuk berjalan pada waktu tertentu di suatu hari , ataupun di hari tertentu pada suatu minggu, ataupun pada waktu tertentu dalam hari dan bulan yang lebih spesifik. Cron job juga memungkinkan untuk mengatur lebih rinci sampai ke menit ataupun lebih jauh ke acara tahunan.

SQL Server 2012 Hosting Indonesia - Jaringan Hosting

Berikut ini langkah sederhana bagaimana membangun Cron Job untuk backup SQL Database

  • Step 1 buat folder penyimpanan file backup di dalam FTP application

Buka ftp application dan connect ke account yang databasenya ingin anda back up. Buat folder diluar dari webcontent misalnya “backups”.

  • Step 2 Atur folder permissions dalam FTP Application

Klik kanan folder dan tambahkan semua write permission. Jika ftp software anda tidak mampu melakukan hal ini cobalah gunakan FTP client free seperti FileZilla.

  • Step 3 Buat sebuh prosedur penyimpanan yang melakukan backup dengan nama file sebagai input parameternya

Connect ke database menggunakan client dan jalankan query berikut. Prosedur ini dinamakan FullBackup sebagai contoh

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[FullBackup] @FileName  nvarchar(256)
AS
BEGIN

SET NOCOUNT ON;

BACKUP DATABASE [123456_YourDatabase] TO  DISK = @FileName WITH NOFORMAT, NOINIT,  NAME = N’Full Database Backup’, SKIP, NOREWIND, NOUNLOAD,  STATS = 10

END

  • Step 4 buat halaman web yang mengeksekusi prosedur penyimpanan

Anda dapat menggunakan php ataupun asp.net. untuk yang sederhana seperti ini anda dapat menggunakan classic asp. Pada hal ini tidakl ada file dll yang ditangani dan juga tidak dibutuhkan restart aplikasi. Sekarang buatlah halaman asp baru backupdb.asp. isi dari filenya akan mengikuti, jika telah selesai, upload file ini ke folder di dalam content area.

Script in akan meng-generate filename berdasarkan data yang ada. Jika backup pada hari tersebut sudah ada, maka prosedur tersebut akan manambah hitungan sampai filename terbaru ditemukan.

Script ini akan meng-generatte 1 file tiap eksekusi. modifikasi sesuai kebutuhan jika anda ingin menambah sebuah file. edit lokasi dan connection string agar dapat bekerja.

<%@LANGUAGE=”VBSCRIPT” CODEPAGE=”65001″%>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Untitled Document</title>
</head>

<body>

<%
dim thismonth, thisday, thisyear, location, filelename, ver, extention, abolutespath

thismonth= datepart(“m”, now())
thisday=datepart(“d”, now())
thisyear=datepart(“yyyy”,now())

location=”fs1-n03stor1wc1dfw8382492382489www.yoursite.combackups”
filename=”dbBackup-” & thismonth & “-” & thisday & “-” & thisyear & “_”
ver=1
extention=”.bak”

absolutepath=location & filename & ver & extention

set fso = Server.CreateObject(“Scripting.FileSystemObject”)

while (fso.FileExists(absolutepath)=True)
ver=ver+1
absolutepath=location & filename & ver & extention
wend

Set cn = Server.CreateObject(“ADODB.Connection”)
cn.connectionString= “Provider=SQLNCLI;Server=mssql05-01.wc1;Database=123456_YourDatabase;Uid=123456_YourUsername; Pwd=Yourpassword;”
cn.open

Set cmd = Server.CreateObject(“ADODB.Command”)
Set cmd.ActiveConnection = cn
cmd.CommandText = “FullBackup”
cmd.CommandType = 4 ‘adCmdStoredProc

cmd.Parameters.Refresh
cmd.Parameters(1) = absolutepath

cmd.Execute

cn.close

%>

Execution complete:  Filename=<%= filename & ver & extention%>

</body>
</html>

  • Step 5. Jadwalkan cron job untuk memanggil halaman web

Akses control panel dan masuk ke tab fitur di dalam situs, dengan database. Pilih http sebagai Bahasa. Masukan url kedalam asp script dan email anda, dan jadwalkan tugas untuk berjalan setiap hari pada off hour.

 

SQL Server Hosting – JaringanHosting.com :: Konfigurasi MS SQL Server untuk Remote Access

Masalah:
Contoh, sebuah Microsoft SQL tidak dapat diakses dari jarak jauh melalui ODBC , Visual Studio  atau koneksi SQL Server Management Studio .

Solusi ( berlaku untuk MS SQL 2005 , 2008, 2008 R2 , dan 2012 ) :

Windows Firewall biasanya menjadi penyebab dalam masalah ini. Pertama, Buka port TCP 1433 untuk layanan itu sendiri , dan 1434 jika Anda perlu untuk menggunakan layanan SQL Browser . Baca artikel ini untuk mempelajari cara membuka Inbound Custom Allow Rule pada Windows Firewall .

banner-jarhost-square

1. Buka cliconfg dari prompt RUN dan pastikan TCP / IP merupakan protokol aktif.

Untuk SQL 2005/2008/2008 R2 : Periksa Services Tool, Start > Administrative Tools > Services, untuk melihat bahwa service bernama SQL Server ( MSSQLSERVER ) dimulai .

Untuk MS SQL 2012: Gunakan tombol Windows atau mengarahkan kursor ke sudut kiri bawah desktop dan pilih Administrative Tools , kemudian Services untuk melihat bahwa service bernama SQL Server ( MSSQLSERVER ) dimulai .

2. Pastikan bahwa Anda menggunakan perintah yang tepat untuk otentikasi . Account administrator standar SQL bernama sa dan jika Anda membangun server dari salah satu gambar server kami dengan MSSQL pra-instal , password akan berada dalam file teks pada root partisi C .

3. Gunakan netstat -an dari command prompt untuk memverifikasi  server telah listening SQL Traffic pada port yang benar .
Jika server tidak  listening SQL Traffic  pada port yang benar , gunakan SQL Server Configuration Manager untuk mengubah port .

  • Untuk MS SQL 2005/2008/2008 R2 , pergi ke Start > All Programs > Microsoft SQL Server 2005 ( atau 2008/2008 R2 ) > Configuration Tools > SQL Server Configuration Manager.
  • Untuk MS SQL 2012 : Gunakan tombol Windows atau mengarahkan kursor ke sudut kiri bawah desktop dan pilih All Programs > Microsoft SQL Server 2012 > Configuration Tools > SQL Server Configuration Manager.
  • Buka + sebelah SQL Server Network Configuration.
  • Klik kanan TCP / IP dan pilih Properties .
  • Pilih Alamat IP .
  • Semua port TCP yang disebutkan pada semua interface harus 1433. Ubah ini untuk mencerminkan nomor port yang benar , kemudian restart layanan SQL .

5. Jika Anda menggunakan nama instance ketika menginstal SQL, ini akan memberikan Anda kemampuan untuk meng-host beberapa versi SQL atau jenis layanan. Anda harus menentukan nama  instances saat menghubungkan SQL  daripada hanya menggunakan nama server atau IP . Jika Anda telah membuat bernama instance, Anda akan perlu untuk mengaksesnya dengan menambahkan nama untuk nama server atau IP , setelah backslash

(misalnya 12.34.56.78 \ SQLINSTANCENAME atau SQLSERVERNAME \ SQLINSTANCENAME ).

 

Ingin mendapatkan WordPress Hosting Murah, Terbaik dan Berkualitas? 

 

mjarhost  JaringanHosting.com adalah provider ASP.NET danWindows Hosting No #1 di Indonesia sesuai dengan rekomendasi dari pihak Microsoft. Microsoft memberikan rekomendasi ini berdasarkan pada beberapa persyaratan utama, yaitu: WebMatrix, WebDeploy, Visual Studio 2012, ASP.NET 4.5, ASP.NET MVC 4.0, Silverlight 5 and Visual Studio Lightswitch. Untuk keterangan lanjutan, silahkan klik disini!  

 

SQL Server 2008 Hosting :: Parameter Sniffing Resolution

Pada artikel saya kali ini saya akan berbicara tentang cara-cara untuk menyelesaikan Parameter Sniffing pada SQL Server 2008. Metode untuk menyelesaikan masalah Parameter Sniffing tercantum di bawah ini:

  1. Menggunakan local variable dengan prosedur.
  2. Menggunakan recompile option saat create prosedur.
  3. Menggunakan Query OPTIME FOR.

Mari kita telusuri satu per satu.

Menggunakan Local Variable dengan Prosedur.

DROP TABLE fruit
GO
CREATE TABLE fruit (Sno int identity,frtname varchar(20),frttype int)
GO
— Insert dummy data
INSERT INTO fruit Values(‘Apple’,rand()*1000)
GO 10000
INSERT INTO fruit Values(‘Mango’,rand()*1000)
GO 10
CREATE unique clustered index ix_sno on fruit(sno)
GO
CREATE INDEX ix_frtname on fruit(frtname) include(frttype)
GO

Script di atas adalah script yang mengisi TABLE FRUIT dengan nilai-nilai(value).

CREATE Proc usp_fetchfruits
@frtname varchar(20)
AS
BEGIN
SELECT * FROM fruit WHERE frtname=@frtname
END
GO
— procedure with local variables
CREATE Proc usp_fetchfruits_localvar
@frtname varchar(20)
AS
BEGIN
DECLARE @fruitname varchar(20)
SET @fruitname=@frtname
SELECT * FROM fruit WHERE frtname=@fruitname
END
GO

Query di atas mengcreate dua prosedur usp_fetchfruits dan usp_fetchfruits_localvar. Prosedur usp_fetchfruits_localvar menggunakan local variable.. Sekarang Mari kita bandingkan rencana pelaksanaan prosedur di atas.

1Snapshot diatas membandingkan rencana eksekusi dari dua prosedur. Perbedaan jumlah optimizer estimasi dan actual number pada baris kedua karena optimizer tidak tahu nilai parameter sebenarnya harus dilewatkan kemana, sehingga optimizer menciptakan rencana generik berdasarkan statistik yang tersedia. Table fruit memiliki total 10010 baris dan jumlah optimizer estimasi baris adalah 5005 yang persis setengah dari jumlah total.

Metode ini tidak menyelesaikan masalah performa tapi mungkin tidak begitu efektif jika jumlah baris sebenarnya adalah cara yang lebih besar daripada rata-rata baris yang diperkirakan.

Menggunakan Recompile Option saat membuat prosedur.
masalah Parameter Sniffing terjadi karena rencana cache dari eksekusi pertama digunakan dalam future procedure execution(eksekusi prosedur yang akan dating). Jika prosedur ini sedang disusun dan rencana disiapkan lagi untuk setiap eksekusi dari Parameter Sniffing maka akan diselesaikan. Inilah yang disebut dengan Recompile ketika digunakan dalam definisi prosedur. Recompile prosedur ini untuk membuat rencana baru setiap kali prosedur dijalankan.

CREATE Proc usp_fetchfruits_withrecompile
@frtname varchar(20)
WITH RECOMPILE
AS
BEGIN
SELECT * FROM fruit WHERE frtname=@frtname
END

2Snapshot diatas, baik dalam eksekusi rencana optimizer yang estimasi maupun catatan actual number yang sama karena rencana yang telah di recompile untuk setiap nilai parameter bukan rencana cache yang digunakan pada eksekusi kedua.

Masalah dengan metode ini adalah bahwa resource digunakan untuk recompile prosedur setiap kalinya. Rencana ini bahkan merecompile untuk nilai-nilai parameter yang mungkin mendapat manfaat dari rencana cache.

Query OPTIMIZE FOR
Dengan menggunakan query OPTIMIZE FOR kita dapat memiliki sebuah query SQL Server optimize berdasarkan nilai parameter tertentu.

CREATE Proc usp_fetchfruits_optimizefor
@frtname varchar(20)
AS
BEGIN
SELECT * FROM fruit WHERE frtname=@frtname
OPTION (OPTIMIZE FOR (@frtname = ‘Mango’))
END

Pada prosedur di atas, tidak memperdulikan nilai parameter yang mensupply select query yang akan dioptimalkan pada nilai “Mango”.

3Snapshot diatas membandingkan rencana eksekusi untuk nilai parameter “Apple” dan “Mango”. Dalam kedua rencana tersebut nilai-nilai estimasi tetap 10000 yang merupakan jumlah total untuk parameter “Apple”.

SQL Server 2008 memperluas query OPTIMIZE FOR sehingga dapat mengoptimalkan query untuk nilai yang tidak diketahui. Ini agak mirip dengan metode menggunakan variabel lokal.

CREATE Proc usp_fetchfruits_optimizeforunknown
@frtname varchar(20)
AS
BEGIN
SELECT * FROM fruit WHERE frtname=@frtname
OPTION (OPTIMIZE FOR UNKNOWN)
END

Prosedur di atas menggunakan query OPTIMIZE FOR UNKNOWN untuk menyingkirkan masalah parameter sniffing.

4Snapshot diatas membandingkan eksekusi untuk nilai parameter Apple dan Mango. Optimizer memperkirakan jumlah rata-rata baris yang dikembalikan seperti ketika menggunakan variabel lokal.

Cara lain adalah dengan membuat prosedur yang tersimpan ganda dan memanggil mereka didasarkan pada nilai parameter. Misalnya, Dalam hal ini kita dapat membuat 2 prosedur yang berbeda satu untuk parameter nilai mangga dan satu untuk nilai parameter Apple dan memanggil mereka berdasarkan nilai parameter yang disediakan.

Kesimpulan
Pada artikel ini saya berbicara tentang cara-cara untuk meningkatkan kinerja pada saat menghadapi masalah PARAMETER SNIFFING.

 

Truncate transaksi log (Shrink transaksi log) pada SQL 2008

Saya baru mengamati bahwa TFS transaction log kini hadir hingga 200GB pada SQL Server 2008 sementara sebenarnya data ukuran DB hanya sekitar 20GB. Hal ini dikarenakan tidak adanya pemotongan pada transaction log file.

TRUNCATE hanya dihapus di SQL 2008. Jadi sekarang ada sedikit langkah lebih untuk mengikuti pemotongan transaction log di SQL Server 2008 / R2.

Berikut adalah langkah-langkah untuk shrink transaction log untuk full recovery mode database di SQL 2008 / R2:

1. Backup Database Pada SSMS Obyek Explorer, klik kanan pada database => Tasks => [Back Up …] menu.

image 1

Anda dapat memperkirakan ukuran DB backup dengan menggunakan sp_spaceused sebelum melanjutkan backup DB.

2. Backup Transaction Log selama dua kali
Memunculkan BackUp Database dialog yang sama  seperti # 1 di atas. Pilih Transaction Login Backup Type.

image 2

Anda mungkin memerlukan backup dari transaction log selama dua kali untuk shrink file log dengan benar.

3. Shrink Transaction Log
Dalam SSMS Obyek Explorer, klik kanan pada database => Tasks => Shrink => [File] menu.

image 3

 4. Sesuaikan ukuran Transaksi Log (Opsional)
Dalam SSMS Obyek Explorer, klik kanan pada database => [Properties] menu.
Mengubah Ukuran awal pada Log

image 4Meningkatkan transaction log mungkin berguna jika ukuran transaction log terlalu kecil. Jika Anda tahu Tingkat kenaikan transaction log, Anda dapat menyesuaikan dengan baik ukuran awal dan Autogrowth rate.