Maintain Temp.db

Source:www.mssqltips.com

 

FIX IT TEMP.DB

 

Saya mengamati ukuran dari SQL Server temp.db saya naik begitu besar sampai belasan GB. Dan setelah disusutkan menjadi sekitar 1 GB.

Solusi
The behavior described in the problem statement is SQL Server’s behavior by design. To elaborate, the tempdb size will reset itself to the last manually configured size when the SQL Server service is restarted. The tempdb database will increase in size due to auto-growth, but this last size is not retained after a SQL Server service restart.

Internally within SQL Server, the current tempdb database size and the last manually configured database size are stored in different system catalogs.

The current tempdb database size can be found by querying DMV tempdb.sys.database_files.
The last manually configured tempdb database size can be found by querying DMV sys.master_files.
The steps below simulate the scenario outlined in the problem statement on SQL Server 2016 SP1 Developer Edition.

Step 1 – Manually set tempdb database size
My initial tempdb configuration is two data files with 8 MB each and the transaction log file is 8 MB. This tempdb configuration is the result after an installation of SQL Server 2016. This configuration is treated as the last configured size unless the tempdb size is manually altered from SSMS or a T-SQL command.

The T-SQL command below will change the two tempdb database data files to 500MB each and the transaction log to 1GB.

USE [master]
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N’temp2′, SIZE = 512000KB , FILEGROWTH = 1GB )
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N’tempdev’, SIZE = 512000KB , FILEGROWTH = 1GB )
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N’templog’, SIZE = 1048576KB , FILEGROWTH = 1GB )
GO
Step 2 – Check tempdb database size
Whether checking the database size from SSMS or querying the DMVs, it will report the same configured tempdb size.

tempdb
Querying DMV sys.database_files and sys.master_files will output the same result.

— configured size
SELECT
name, file_id, type_desc, size * 8 / 1024 [TempdbSizeInMB]
FROM sys.master_files
WHERE DB_NAME(database_id) = ‘tempdb’
ORDER BY type_desc DESC, file_id
GO

— current size
SELECT
name, file_id, type_desc, size * 8 / 1024 [TempdbSizeInMB]
FROM tempdb.sys.database_files
ORDER BY type_desc DESC, file_id
GO
tempdev
Step 3 – Fill up tempdb
The code below will consume about 9GB of space in the tempdb database which causes the tempdb data files to auto-grow.

CREATE TABLE #LargeTempTable (col1 char(3000) default ‘a’, col2 char(3000) default ‘b’)

SET NOCOUNT ON;
DECLARE @i INT = 1

BEGIN TRAN
WHILE @i <= 950000
BEGIN
INSERT INTO #LargeTempTable DEFAULT VALUES
SET @i += 1
END

COMMIT TRAN

DROP TABLE #LargeTempTable
Step 4 – Check tempdb size again
It is easy to use SSMS to check the current tempdb size. If you right click on tempdb and select Properties the following screen will open. The tempdb database properties page will show the current tempdb size as 4.6 GB for each of the two data files and 2 GB for the log file.

files
If you query DMV sys.databases_files, this also reports the current database size.

— current size
SELECT
name, file_id, type_desc, size * 8 / 1024 [TempdbSizeInMB]
FROM tempdb.sys.database_files
ORDER BY type_desc DESC, file_id
tempdev
To get the last manually configured tempdb database size, you need to query DMV sys.master_files. When the SQL Server service is restarted, the tempdb files will reset to these configured sizes.

Here is the query to get the sizes that will be used if tempdb is recreated.

— configured size
SELECT
name, file_id, type_desc, size * 8 / 1024 [TempdbSizeInMB]
FROM sys.master_files
WHERE DB_NAME(database_id) = ‘tempdb’
ORDER BY type_desc DESC, file_id
GO
This matches what we show in Step 2.

tempdev
Step 5 – Restart SQL Server service
After the SQL Server service is restarted, you will see the tempdb size will be reset to the last manually configured size specified in DMV sys.master_files.

tempdev
Summary
The tempdb database data files and transaction log size can be modified using SSMS or T-SQL commands. Whether the file sizes grow or are shrunk, the last manually configured size will be reflected in DMV sys.master_files.

It is essential to understand the difference between DMV reporting the current tempdb database size versus the last manually configured size. By comparing sys.master_files and sys.database_files, you can also easily tell how much tempdb has auto-grown since the last time SQL Server was started.

Advertisements
Maintain Temp.db

Berpikir dengan 6 Sudut Pandang (Six Thinking Hats)

Dari:sscx.asia

Salah satu rahasia orang sukses adalah mereka memiliki kemampuan untuk berpikir dari sudut pandang yang rasional dan positif. Namun seringkali mereka gagal untuk melihat masalah dari sisi emosional, intuitif, kreatif atau negatifnya. Kemungkinan banyak dari kita meremehkan kemungkinan resistensi orang lain terhadap rencana-rencana baru, kegagalan dalam membuat langkah kreatif dan tidak membuat perencanaan yang terstruktur.
Salah satu tantangannya adalah bentrok dengan beberapa orang yang defensif dan tidak menyukai perubahan, dan beberapa orang mungkin sulit untuk menerima keputusan dengan tenang dan rasional.

Mengapa Six Thinking Hats Sangat Berguna?
Jika kita mencari pemecahan masalah dengan Six Thinking Hats, kita akan mampu menemukannya melalui berbagai pendekatan. Keputusan yang kita ambil akan lebih kaya dan terintegrasi, dengan gabungan dari ambisi, kemampuan eksekusi, sensitifitas publik yang akan merasakan pengaruh dari keputusan, kreatifitas dan dengan perencanaan yang baik.

Bagaimana Menggunakan Six Thinking Hats?
Anda bisa menggunakan Six Thinking Hats dalam meeting atau untuk diri Anda sendiri. Jika digunakan dalam meeting, teknik ini berguna untuk menghentikan konfrontasi yang terjadi ketika orang-orang yang mendiskusikan permasalahan yang sama memiliki cara pikir yang berbeda.
Setiap “Topi Berpikir” merupakan cara pikir yang berbeda.

Topi-topi tersebut adalah:

Topi Putih
Dengan “memakai” topi putih, Anda bisa fokus kepada data yang tersedia. Lihatlah informasi yang Anda punya, dan temukan pelajaran dari semua informasi tersebut. Telitilah ruang-ruang kosong dari susunan informasi Anda, dan cobalah untuk mengisinya atau temukan hikmahnya. Ketika memakai topi ini, Anda akan menganalisa tren-tren lama dan mengekstrapolasi data-data historikal.

Topi Merah
Ketika mengenakan Topi Merah, Anda akan melihat masalah melalui intuisi, reaksi berantai, dan emosi. Cobalah untuk berpikir bahwa semua orang akan bereaksi secara emosional terhadap perencanaan baru. Dengan topi ini, Anda bisa mencoba untuk mengerti mengapa orang merespon sedemikian rupa; mungkin karena mereka tidak memahami alasan Anda.

Topi Hitam
Topi hitam akan memberikan pandangan mengenai sisi buruk dari semua keputusan. Pahamilah dengan hati-hati dan defensif. Mengapa keputusan ini bisa gagal? Topi ini sangat penting karena memberikan Anda kesempatan untuk menghilangkan hal hal negatif, mengganti beberapa keputusan yang salah, atau menyiapkan perencanaan untuk menanggulangi hal-hal buruk. Topi Hitam membantu Anda untuk membuat perencanaan yang lebuh “kuat” dan fleksibel. Topi ini juga memungkinkan Anda untuk menemukan cacat-cacat yang fatal dan resiko-resiko sebelum memulai tindakan apapun. Topi Hitam adalah tokoh utama dalam teknik ini, yang akan memberikan manfaat terbesar. Alasannya adalah, beberapa orang sukses terbiasa untuk berpikir positif sehingga tidak melihat masalah sejak awal. Hal ini akan menyebabkan kurangnya persiapan dalam menghadapi masalah yang mungkin muncul.

Topi Kuning
Memakai Topi Kuning membantu Anda untuk berpikir positif. Inilah sudut pandang positif yang membantu Anda melihat keuntungan dari semua keputusan dan value di dalamnya. Pemikiran Topi Kuning memungkinkan Anda untuk terus maju walaupun keadaan sedang sulit.

Topi Hijau
Topi Hijau mewakili sisi kreatif. Disini Anda bisa mengembangkan solusi kreatif bagi semua masalah. Topi ini memungkinkan Anda mengeksplorasi, dimana ide-ide kreatif mendapatkan paling sedikit kritik. Sangat banyak perkakas kreatifitas yang bisa Anda gunakan disini.

Topi Biru
Topi Biru adalah topi untuk kontrol proses. Topi ini dipakai oleh mereka yang memimpin meeting. Ketika situasi sulit terjadi dan ide-ide mulai kering, pemakai Topi Biru akan mengalihkan aktifitas tim menuju Topi Hijau. Ketika perencanaan lain dibutuhkan, mereka akan mengarahkan kepada Black Hat. Continue reading "Berpikir dengan 6 Sudut Pandang (Six Thinking Hats)"

Berpikir dengan 6 Sudut Pandang (Six Thinking Hats)

SQL Server Date Formats

Date Formats

SQL Server Date Formats

One of the most frequently asked questions in SQL Server forums is how to format a datetime value or column into a specific date format.  Here’s a summary of the different date formats that come standard in SQL Server as part of the CONVERT function.  Following the standard date formats are some extended date formats that are often asked by SQL Server developers.

It is worth to note that the output of these date formats are of VARCHAR data types already and not of DATETIME data type.  With this in mind, any date comparisons performed after the datetime value has been formatted are using the VARCHAR value of the date and time and not its original DATETIME value.

Standard Date Formats
Date Format Standard SQL Statement Sample Output
Mon DD YYYY 1
HH:MIAM (or PM)
Default SELECT CONVERT(VARCHAR(20), GETDATE(), 100) Jan 1 2005 1:29PM 1
MM/DD/YY USA SELECT CONVERT(VARCHAR(8), GETDATE(), 1) AS [MM/DD/YY] 11/23/98
MM/DD/YYYY USA SELECT CONVERT(VARCHAR(10), GETDATE(), 101) AS [MM/DD/YYYY] 11/23/1998
YY.MM.DD ANSI SELECT CONVERT(VARCHAR(8), GETDATE(), 2) AS [YY.MM.DD] 72.01.01
YYYY.MM.DD ANSI SELECT CONVERT(VARCHAR(10), GETDATE(), 102) AS [YYYY.MM.DD] 1972.01.01
DD/MM/YY British/French SELECT CONVERT(VARCHAR(8), GETDATE(), 3) AS [DD/MM/YY] 19/02/72
DD/MM/YYYY British/French SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS [DD/MM/YYYY] 19/02/1972
DD.MM.YY German SELECT CONVERT(VARCHAR(8), GETDATE(), 4) AS [DD.MM.YY] 25.12.05
DD.MM.YYYY German SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS [DD.MM.YYYY] 25.12.2005
DD-MM-YY Italian SELECT CONVERT(VARCHAR(8), GETDATE(), 5) AS [DD-MM-YY] 24-01-98
DD-MM-YYYY Italian SELECT CONVERT(VARCHAR(10), GETDATE(), 105) AS [DD-MM-YYYY] 24-01-1998
DD Mon YY 1 SELECT CONVERT(VARCHAR(9), GETDATE(), 6) AS [DD MON YY] 04 Jul 06 1
DD Mon YYYY 1 SELECT CONVERT(VARCHAR(11), GETDATE(), 106) AS [DD MON YYYY] 04 Jul 2006 1
Mon DD, YY 1 SELECT CONVERT(VARCHAR(10), GETDATE(), 7) AS [Mon DD, YY] Jan 24, 98 1
Mon DD, YYYY 1 SELECT CONVERT(VARCHAR(12), GETDATE(), 107) AS [Mon DD, YYYY] Jan 24, 1998 1
HH:MM:SS SELECT CONVERT(VARCHAR(8), GETDATE(), 108) 03:24:53
Mon DD YYYY HH:MI:SS:MMMAM (or PM) 1 Default +
milliseconds
SELECT CONVERT(VARCHAR(26), GETDATE(), 109) Apr 28 2006 12:32:29:253PM 1
MM-DD-YY USA SELECT CONVERT(VARCHAR(8), GETDATE(), 10) AS [MM-DD-YY] 01-01-06
MM-DD-YYYY USA SELECT CONVERT(VARCHAR(10), GETDATE(), 110) AS [MM-DD-YYYY] 01-01-2006
YY/MM/DD SELECT CONVERT(VARCHAR(8), GETDATE(), 11) AS [YY/MM/DD] 98/11/23
YYYY/MM/DD SELECT CONVERT(VARCHAR(10), GETDATE(), 111) AS [YYYY/MM/DD] 1998/11/23
YYMMDD ISO SELECT CONVERT(VARCHAR(6), GETDATE(), 12) AS [YYMMDD] 980124
YYYYMMDD ISO SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD] 19980124
DD Mon YYYY HH:MM:SS:MMM(24h) 1 Europe default + milliseconds SELECT CONVERT(VARCHAR(24), GETDATE(), 113) 28 Apr 2006 00:34:55:190 1
HH:MI:SS:MMM(24H) SELECT CONVERT(VARCHAR(12), GETDATE(), 114) AS [HH:MI:SS:MMM(24H)] 11:34:23:013
YYYY-MM-DD HH:MI:SS(24h) ODBC Canonical SELECT CONVERT(VARCHAR(19), GETDATE(), 120) 1972-01-01 13:42:24
YYYY-MM-DD HH:MI:SS.MMM(24h) ODBC Canonical
(with milliseconds)
SELECT CONVERT(VARCHAR(23), GETDATE(), 121) 1972-02-19 06:35:24.489
YYYY-MM-DDTHH:MM:SS:MMM ISO8601 SELECT CONVERT(VARCHAR(23), GETDATE(), 126) 1998-11-23T11:25:43:250
DD Mon YYYY HH:MI:SS:MMMAM 1 Kuwaiti SELECT CONVERT(VARCHAR(26), GETDATE(), 130) 28 Apr 2006 12:39:32:429AM 1
DD/MM/YYYY HH:MI:SS:MMMAM Kuwaiti SELECT CONVERT(VARCHAR(25), GETDATE(), 131) 28/04/2006 12:39:32:429AM
Here are some more date formats that does not come standard in SQL Server as part of the CONVERT function.

Extended Date Formats
Date Format SQL Statement Sample Output
YY-MM-DD
SELECT SUBSTRING(CONVERT(VARCHAR(10), GETDATE(), 120), 3, 8) AS [YY-MM-DD]
SELECT REPLACE(CONVERT(VARCHAR(8), GETDATE(), 11), ‘/’, ‘-‘) AS [YY-MM-DD]
99-01-24
YYYY-MM-DD
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD]
SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 111), ‘/’, ‘-‘) AS [YYYY-MM-DD]
1999-01-24
MM/YY SELECT RIGHT(CONVERT(VARCHAR(8), GETDATE(), 3), 5) AS [MM/YY]
SELECT SUBSTRING(CONVERT(VARCHAR(8), GETDATE(), 3), 4, 5) AS [MM/YY]
08/99
MM/YYYY SELECT RIGHT(CONVERT(VARCHAR(10), GETDATE(), 103), 7) AS [MM/YYYY] 12/2005
YY/MM SELECT CONVERT(VARCHAR(5), GETDATE(), 11) AS [YY/MM] 99/08
YYYY/MM SELECT CONVERT(VARCHAR(7), GETDATE(), 111) AS [YYYY/MM] 2005/12
Month DD, YYYY 1 SELECT DATENAME(MM, GETDATE()) + RIGHT(CONVERT(VARCHAR(12), GETDATE(), 107), 9) AS [Month DD, YYYY] July 04, 20061
Mon YYYY 1 SELECT SUBSTRING(CONVERT(VARCHAR(11), GETDATE(), 113), 4, 8) AS [Mon YYYY] Apr 2006 1
Month YYYY1 SELECT DATENAME(MM, GETDATE()) + ‘ ‘ + CAST(YEAR(GETDATE()) AS VARCHAR(4)) AS [Month YYYY] February 20061
DD Month 1 SELECT CAST(DAY(GETDATE()) AS VARCHAR(2)) + ‘ ‘ + DATENAME(MM, GETDATE()) AS [DD Month] 11 September1
Month DD 1 SELECT DATENAME(MM, GETDATE()) + ‘ ‘ + CAST(DAY(GETDATE()) AS VARCHAR(2)) AS [Month DD] September 111
DD Month YY 1 SELECT CAST(DAY(GETDATE()) AS VARCHAR(2)) + ‘ ‘ + DATENAME(MM, GETDATE()) + ‘ ‘ + RIGHT(CAST(YEAR(GETDATE()) AS VARCHAR(4)), 2) AS [DD Month YY] 19 February 72 1
DD Month YYYY 1 SELECT CAST(DAY(GETDATE()) AS VARCHAR(2)) + ‘ ‘ + DATENAME(MM, GETDATE()) + ‘ ‘ + CAST(YEAR(GETDATE()) AS VARCHAR(4)) AS [DD Month YYYY] 11 September 2002 1
MM-YY SELECT RIGHT(CONVERT(VARCHAR(8), GETDATE(), 5), 5) AS [MM-YY]
SELECT SUBSTRING(CONVERT(VARCHAR(8), GETDATE(), 5), 4, 5) AS [MM-YY]
12/92
MM-YYYY SELECT RIGHT(CONVERT(VARCHAR(10), GETDATE(), 105), 7) AS [MM-YYYY] 05-2006
YY-MM SELECT RIGHT(CONVERT(VARCHAR(7), GETDATE(), 120), 5) AS [YY-MM]
SELECT SUBSTRING(CONVERT(VARCHAR(10), GETDATE(), 120), 3, 5) AS [YY-MM]
92/12
YYYY-MM SELECT CONVERT(VARCHAR(7), GETDATE(), 120) AS [YYYY-MM] 2006-05
MMDDYY SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 1), ‘/’, ”) AS [MMDDYY] 122506
MMDDYYYY SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 101), ‘/’, ”) AS [MMDDYYYY] 12252006
DDMMYY SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 3), ‘/’, ”) AS [DDMMYY] 240702
DDMMYYYY SELECT REPLACE(CONVERT(VARCHAR(10), GETDATE(), 103), ‘/’, ”) AS [DDMMYYYY] 24072002
Mon-YY 1 SELECT REPLACE(RIGHT(CONVERT(VARCHAR(9), GETDATE(), 6), 6), ‘ ‘, ‘-‘) AS [Mon-YY] Sep-02 1
Mon-YYYY 1 SELECT REPLACE(RIGHT(CONVERT(VARCHAR(11), GETDATE(), 106), 8), ‘ ‘, ‘-‘) AS [Mon-YYYY] Sep-2002 1
DD-Mon-YY1 SELECT REPLACE(CONVERT(VARCHAR(9), GETDATE(), 6), ‘ ‘, ‘-‘) AS [DD-Mon-YY] 25-Dec-05 1
DD-Mon-YYYY 1 SELECT REPLACE(CONVERT(VARCHAR(11), GETDATE(), 106), ‘ ‘, ‘-‘) AS [DD-Mon-YYYY] 25-Dec-20051

1 To make the month name in upper case, simply use the UPPER string function.

Source:

SQL Server Date Formats

The Four Agreements

2 Comments

Kalau ada satu buku yang menurut saya praktis dan juga penuh dengan wisdom, buku itu adalah The Four Agreements karangan Don Miguel Ruiz. Sangat praktis karena kalau kita mengaplikasikan 4 hal ini dalam keseharian, terasa sekali bagaimana hidup kita bisa berubah. Namun, praktis tidak berarti mudah. Karena hidup kita sudah terkondisikan sedemikian rupa sebagai ‘orang dewasa’ sehingga banyak sekali kebiasaan-kebiasaan yang harus kita tanggalkan terlebih dahulu sebelum bisa merasakan perubahannya.

You need a very strong will in order to adopt the Four Agreements – but if you can begin to live your life with these agreements, the transformation in your life will be amazing. You will see the drama of hell disappear right before your eyes. Instead of living a dream of hell, you will be creating a new dream – your personal dream of heaven.

 

 

We have many agreements that make us suffer, that make us fail in life. If you want to live a life of joy and fulfillment, you have to find the courage to break those agreements that are fear-based and claim your personal power.

 

 

 

 

 

Speak with integrity. Say only what you mean. Avoid using the Word to speak against yourself or to gossip about others. Use the power of your Word in the direction of truth and love.

 

 

 

 

When you are impeccable with your word, you feel good; you feel happy and at peace.

 

 

 

 

 

 

 

You take it personally because you agree with whatever was said.

 

 

 

 

 

Personal importance, or taking things personally, is the maximum expression of selfishness because we make the assumption that everything is about “me”.

 

 

 

 

 

Immunity to poison in the middle of hell is the gift of this agreement.

 

 

 

 

 

The problem with making assumptions is that we believe they are the truth.

 

All the sadness and drama you have lived in your life was rooted in making assumptions and taking things personally.

 

We make all sorts of assumptions because we don’t have the courage to ask questions.

 

 

 

 

 

 

Under any circumstance, always do your best, no more and no less. But keep in mind that your best is never going to be the same from one moment to the next.

 

Your best will depend on whether or not you are feeling wonderful and happy, or upset, angry, or jealous.

 

 

 

 

Doing your best is taking the action because you love it, not because you’re expecting a reward.

If we like what we do, if we always do our best, then we are really enjoying life.

When you do your best you learn to accept yourself.

 

 

 

 

 

When you honor these four agreements together, there is no way that you will live in hell. There is no way.

 

 

 

 

the four agreementsKalau kata Om Ruiz, kita butuh niat yang sangat kuat untuk bisa mengaplikasikan 4 Persetujuan ini. Tetapi, kalau kita bisa, maka akan terjadi suatu transformasi yang luar biasa. Kita akan mulai melihat drama hilang dari kehidupan kita dan mulai menciptakan surga di dunia.Wow. Masa sih om? Dibuat penasaran juga sih.

Apa gunanya 4 Agreements ini?

Untuk melepaskan kita dari The Domestification of Human.

Apa om? Apa itu?

Tanpa kita sadari, seumur hidup kita, kita telah menerima berbagai macam informasi dari ayah, ibu, guru, teman, lingkungan yang akhirnya membentuk kepercayaan dan juga pola pikir kita. Kita diajarkan bagaimana hidup yang ‘benar’ dan perilaku-perilaku apa yang ‘benar’ juga. Kita memiliki konsep benar dan salah, dan akhirnya belajar untuk mulai menghakimi, baik ke diri sendiri dan juga orang lain. Banyak sekali peraturan-peraturan yang diajarkan ke kita melalui sistem reward dan punishment. Yang akhirnya kita belajar untuk melakukan sesuatu demi mendapatkan reward (walaupun hanya untuk mendapatkan perhatian) dan takut terhadap penolakan. Kita telah banyak menerima berbagai agreements, peraturan, kondisi yang sebenarnya belum tentu sesuai ataupun kita setujui. Kita telah di domestifikasi (dijinakkan), seperti binatang liar yang sudah lupa terhadap jati diri dan instingnya.

Nah, 4 Agreements inilah yang bisa melepaskan kita dari domestifikasi tersebut. Dimana kita bisa kembali menemukan kekuatan diri kita yang sesungguhnya.

#1: Be Impeccable With Your Word

Gunakan kata-kata dengan integritas. Katakan hanya apa yang benar-benar kamu maksudkan. Hindari penggunaan kata-kata yang merendahkan diri sendiri ataupun orang lain, termasuk gosip. Gunakan kata-kata untuk mengekspresikan kejujuran dan kasih sayang.

Apa yang kamu katakan bisa mengubah hidupmu. Begitu kuatnya kata-kata, ia bisa mengubah dunia menjadi lebih baik ataupun menghancurkannya.

Impeccable artinya “without sin” – tanpa dosa, dimana dosa disini maksudnya adalah hal-hal yang kita lakukan yang bertolak belakang dengan diri kita sendiri, seperti menyalahkan atau menghakimi diri sendiri ataupun orang lain. Menjadi impeccable artinya kita mengambil tanggung jawab atas apa yang kita lakukan tanpa menyalahkan ataupun menghakimi diri kita ataupun orang lain. Ini sebabnya gosip adalah racun.

Dosa dimulai dengan membuat penolakan terhadap diri sendiri.Jadi setiap kali kita bilang “Aduh gue gendut banget ya. Gue bodoh banget deh. Gue gak mungkin bisa seperti itu. Gue jelek banget sih.” Itu artinya kita tidak impeccable.

Kita bisa mengukur impeccability dari kata-kata kita dari ukuran self-love. Kalau kita benar-benar mencintai diri kita sendiri, menyukai diri kita sendiri, ini terlihat dari kualitas dan integritas kata-kata kita. Karena orang yang mengasihi dirinya sendiri tidak akan menyakiti diri sendiri ataupun orang lain. Kalau kita sudah impeccable dengan kata-kata kita, kamu akan merasa lebih baik; merasa bahagia, dan damai. Rasanya tentram.

Ehm. *ketampar*

Karena selama ini sudah terbiasa kalau ngomong ya ngomong aja. Gak perlu dipikirin banget-banget gitu ya. Walaupun bercanda, tetapi selalu ada ‘truth’ dibalik becandaan itu. Setelah baca ini, gue jadi lebih hati-hati menggunakan kata.

#2: Don’t Take Anything Personally

Yang artinya adalah… Gak penting untuk merasa tersinggung. Gitu aja kok dimasukin hati.

Apapun yang terjadi di sekitarmu, gak usah dimasukin ke hati.Contohnya, kalau kita ketemu di jalan dan saya bilang, “Eh, elo goblok banget sih” tanpa mengenal dirimu terlebih dahulu… ini bukan tentang kamu; ini tentang saya. Kalau kamu tersinggung atau dimasukin ke hati, mungkin sebenarnya kamu percaya kalau kamu memang goblok. #eh Lalu mulai mikir “kok dia bisa tahu ya?”

“Kalau kamu tersinggung atau sakit hati, artinya kamu setuju dengan apa yang orang lain katakan.”

Oh juaraaaaaaaaaaaa!!!!

Tunggu, ada satu lagi nih.

“Personal importance, atau sakit hati ini adalah bentuk tertinggi dari keegoisan manusia karena kita berasumsi bahwa semuanya adalah tentang ‘SAYA’.”

Mau mati kan dengernya. Ini membuat gue berpikir, setiap kali gue tersinggung atau sakit hati, sebenarnya gue lagi egois. Lalu, tanpa disadari malah setuju dengan hal yang sebenarnya gue gak suka itu. Lalu, ngapain juga pake tersinggung. Apapun yang orang lain lakukan itu bukan tentang kita, tetapi tentang diri mereka sendiri.

Their actions are reflections of them. Not of us. Just like our actions are reflections of us.

*ketampar lagi*

Kalau kita masukin ke hati, artinya kita memakan semua sampah emosi orang tersebut yang sekarang jadi sampah kita juga. Tapi, kalau kita tidak take it personally, kita jadi kebal terhadap hawa neraka.

Kalau ada orang marah, itu cara mereka menghadapi apa yang terjadi dengan mereka. Kita hanya menjadi alasan untuk marah. Orang marah karena takut. Kalau kita tidak takut, tidak mungkin kita marah atau sebel sama orang lain. Kalau kita tidak takut, tidak mungkin kita merasa sedih atau iri.

Aaaarrrgggghhhh. Jadi selama ini sedih atau iri itu karena takut?

Jadi, kata Om Ruiz, kalau kita bisa melakukan Agreement no 1 dan 2 dengan baik, maka kita sudah menanggalkan 75% dari berbagai agreements sebelumnya yang telah membuat kita terjebak di neraka. Jadi, kita bisa saja ada di tengah-tengah neraka tetapi tetap merasakan ketentraman.

#3: Don’t Make Assumptions

Jangan pernah berasumsi!

Karena dengan berasumsi, kita jadi PERCAYA bahwa hal itu adalah benar, padahal belum tentu. Terus kita jadi sakit hati. Terus menghakimi dan menyalahkan orang lain. Jadilah kita bikin masalah sendiri. Jadilah kita menciptakan drama di dunia kita sendiri, tanpa sadar.

Kita berasumsi karena kita takut untuk bertanya dan mengklarifikasi. Yang ada malah kita berpegang teguh terhadap asumsi tersebut dan mencoba untuk membuat orang lain yang salah.

Kita hanya melihat apa yang kita ingin lihat, mendengar apa yang kita ingin dengar. Jarang kita melihat sesuatu apa adanya.

Ini sebabnya banyak relationship yang berantakan, karena terlalu banyak asumsi. Dimana kita berasumsi orang lain tahu apa yang kita pikirkan dan kita pun tidak menyampaikan apa yang kita inginkan. Karena kita pikir, bertanya itu tidak sopan. Dan kalau orang cinta sama kita, mereka mestinya tahu dong apa yang kita inginkan dan rasakan.

Kita berasumsi orang lain melihat dunia sama seperti kita. Ini yang menjegal kita.

Kata Om Ruiz, cinta itu menerima orang lain apa adanya tanpa mencoba untuk mengubahnya. Kalau kita mencoba mengubah mereka, artinya kita tidak benar-benar suka dengan mereka. Hihihi. Bisa aja si Om.

*nampar diri sendiri* (Eh, gak boleh, ini gak sesuai Agreement #1) *elus2 diri sendiri*

#4: Always Do Your Best

Selalu melakukan yang terbaik.

Walaupun apa yang terbaik di saat ini pun bisa berbeda di saat yang lain. Terkadang yang terbaik adalah bangun pagi dan datang ke kantor.

Apapun kualitasnya, selalu lakukan yang terbaik – gak lebih gak kurang. Kalau kamu mencoba terlalu keras maka kamu akan menghabiskan terlalu banyak energi dari yang dibutuhkan, membuat kamu selalu merasa yang terbaik tidak akan pernah cukup. Yang akhirnya, kamu menghukum badanmu sendiri dan bertolak belakang dengan diri sendiri.

Kalau kita melakukan yang terbaik, kita tidak mungkin bisa menghakimi diri kita sendiri. Dan kalau kita tidak menghakimi diri sendiri, kita tidak akan merasa bersalah, menyalahkan diri, ataupun menghukum diri sendiri.

Melakukan yang terbaik adalah melakukan sesuatu bukan karena kita mengharapkan reward tetapi karena we love it. Karena kita memang menyukai dan menikmatinya.

Oh, itu toh artinya.

Selama ini gue percaya bahwa doing my best adalah mengerahkan seluruh tenaga, energi, waktu, darah, daging, dan lain sebagainya. Ternyata kata kuncinya ada di ‘enjoy’. Dan trying too hard itu bukandoing my best.

Banyak dari kita yang bekerja mati-matian, bukan karena suka tetapi karena harus. Harus dapat uang. Harus membuktikan diri. Dan ketika dapat uang pun tetap gak happy juga. Yang akhirnya kita tidak menyukai kehidupan yang kita miliki. Yang akhirnya, kita jadi menyakiti diri sendiri ketika kita tidak menyukai diri ataupun kehidupan kita.

Kita tahu kita sudah melakukan yang terbaik ketika kita bisa menikmati apa yang kita lakukan, dan apa yang kita lakukan tidak berefek negatif ke diri kita sendiri. Kita menerima diri kita sendiri. Kita berhenti membandingkan diri dengan orang lain. Kalau kita terpaksa melakukan sesuatu, gak mungkin kita bisa melakukan yang terbaik.

Kata Om Ruiz, cara terbaik untuk mengatakan “I love you, God” adalah dengan selalu melakukan yang terbaik dalam hidup. Cara terbaik untuk mengatakan “Terima kasih, Tuhan” adalah dengan melepaskan masa lalu dan hidup di masa sekarang, right here and now.

Transforming Hell Into Heaven

Kata Om Ruiz, kalau kita bisa melakukan 4 Agreement ini, maka kita akan mengubah neraka menjadi surga.

…. Menjadi diri kita yang sebenarnya. Menemukan freedom. Kebebasan. Kebebasan untuk menjadi diri kita sendiri, yang paling otentik.

I love this.

Thank you Om Ruiz untuk semua wisdomnya. Saya banyak tertampar (walau gak dimasukin hati kok) tapi senang. Karena proses menuliskan pembelajaran dari buku ini pun menjadi praktek 4 Agreements.

Sumber:http://theunlearn.com/blog/the-four-agreements/

The Four Agreements

Load SQL Server Data into Excel

Load SQL Server Data into Excel.

 

By Example – Using Excel VBA to Export SQL Data Series – 01

Posted by on January 14, 2015 in By Example, Excel, SQL Server, Using Excel VBA to Export SQL Data Series, VBA | 2 Comments

This is the first in a series of posts, where I’ll be building out from this first attempt of using VBA to load data into Excel from SQL Server. There are loads of ways to Export SQL Server data to Excel, but I am always on the hunt for better and easier ways and VBA seems a good option to explore!

Below are the steps to build a VBA Excel spreadsheet that connects to SQL Server data and loads the data into a worksheet:

Create a New “Blank workbook” and Save it as a “Excel Macro-Enabled Workbook (*.xlsm)”, name it what you like.

ExcelVBA01 ExcelVBA02

Name “Sheet1″ as “Data” and Create a second Sheet called “Request”

ExcelVBA09

Go to the Developer Tab, If you dont have a Developer tab go to File -> Options (this opens the Excel Options Tab) Select the Customize Ribbon – and Then Tick the Developer checkbox on the Customize the Ribbon Main Tabs” .

ExcelVBA04

Once you have the Developer Ribbon Select it and then Select “Visual Basic”

ExcelVBA05

This opens the VB, Select Tools -> References

ExcelVBA06

Scroll down and tick the latest “Microsoft ActiveX Data Objects” at present this is the 6.1 Library. and press OK.

ExcelVBA07

Right click on the “Microsoft Excel Objects” Select “insert” -> “Module” ExcelVBA08

Copy and paste the below code into the Module.

NOTE: the Open Connection Section, this will need to be manually changed to your SQL Server, Database and Login details.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub GetDataFromADO()
'Input query'
Dim dbQuery As String
dbQuery = InputBox("Enter Query")
'Declare variables'
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyRecordset As ADODB.Recordset
Dim iCols As Integer
Dim tbl As ListObject
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=AdventureWorks2012;User ID=stephen;Password=Pa$$w0rd;"
objMyConn.Open
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = dbQuery
objMyCmd.CommandType = adCmdText
'Open Recordset'
Set objMyRecordset.Source = objMyCmd
objMyRecordset.Open
For iCols = 0 To objMyRecordset.Fields.Count - 1
Worksheets("Data").Cells(1, iCols + 1).Value = objMyRecordset.Fields(iCols).Name
Next
'Copy Data to Excel'
Worksheets("Data").Range("A2").CopyFromRecordset objMyRecordset
End Sub

ExcelVBA15

Go to the “Request” sheet and create a button via: Select Insert Tab -> Recently Used Shapes. Size it as needed.

ExcelVBA10

Right Click on the Button and “Assign MAcro…”

ExcelVBA11

Select “GetDataFromADO” and press OK.

ExcelVBA12

And there we go. We should be ready to go.

Go to the Request Tab and press the button. This pop up a new Window, Enter your Query here and press OK.

ExcelVBA13

Depending on the size of the result set returns you might get a spinning wheel for a while, once its finished go to the Data Tab which should now be populated with your results.

ExcelVBA14

and there we have it, Stage 1 of the series. I will be hoping to expand the VBA in later series by:

  • Creating a user form to input the “Open Connection” settings as well as the query
  • Either lock down the VBA code so its not readable without a password (Since we currently have Username and passwords in there!) or change it to Windows Auth.
  • Make it repeatable by deleting all the data in the “Data” sheet before each query
  • Format the results
  • Any other fun things i can think of! or people suggest!

I hope you find this series fun and Im hoping to keep this updated regularly as i improve on it and clean things up.

Load SQL Server Data into Excel

Script to identify the CPU Bottlenecks – SQL Server

CXPACKET Waits and High CPU Usage Bottleneck:

When you suspect SQL Server is waiting on CPU and CPU is constantly spiked on 90-100%, then it would wise to check the Top Waits Stats on SQL Server to see if the Top Waits is on “CXPACKET” by using Top Waits Rollup Query here.

Most of the time, DBA needs to find the culprit queries which are using high CPU and try to optimize it them by designing proper indexes or by rewriting the SQL more efficiently.

The queries useful in troubleshooting CPU Bottleneck issues, which are used by me are given below:

–To find queries which are using the most cumulative CPU

select highest_cpu_queries.plan_handle,

highest_cpu_queries.total_worker_time,

q.dbid,

q.objectid,

q.number,

q.encrypted,

q.[text]

from (select top 50

qs.plan_handle,

qs.total_worker_time

from sys.dm_exec_query_stats qs

order by qs.total_worker_time desc) as highest_cpu_queries

cross apply sys.dm_exec_sql_text(plan_handle) as q

order by highest_cpu_queries.total_worker_time desc

–If high runnable tasks count is found by below query then we have is a

–symptom of a CPU bottleneck.

select scheduler_id,

current_tasks_count,

runnable_tasks_count

from sys.dm_os_schedulers

where scheduler_id < 255

–Use below query to find Signal Waits (CPU waits) for instance(above 10-15% is

–usually a sign of CPU pressure)

SELECT      CAST(100.0 * SUM(signal_wait_time_ms) / SUM (wait_time_ms) AS NUMERIC(20,2)) AS[%signal (cpu) waits],

CAST(100.0 * SUM(wait_time_ms – signal_wait_time_ms) / SUM (wait_time_ms) AS NUMERIC(20,2)) AS[%resource waits]

FROM sys.dm_os_wait_stats WITH (NOLOCK) OPTION (RECOMPILE);

–Use the below query to Get Average Task Counts (run multiple times, note

–highest values)

SELECT      AVG(current_tasks_count) AS [Avg Task Count],

AVG(runnable_tasks_count) AS [Avg Runnable Task Count],

AVG(pending_disk_io_count) AS [AvgPendingDiskIOCount]

FROM sys.dm_os_schedulers WITH (NOLOCK)

WHERE scheduler_id < 255 OPTION (RECOMPILE);

–The below query can be used to find Top 50 SQL Statements taking a high cpu.

select top 50

sum(qs.total_worker_time) as total_cpu_time,

sum(qs.execution_count) as total_execution_count,

count(*) as number_of_statements,

qs.plan_handle

from sys.dm_exec_query_stats qs

group by qs.plan_handle

order by sum(qs.total_worker_time) desc

–The below query useful in finding time spent optimising query

select *

from sys.dm_exec_query_optimizer_info

–To check plan_generation_num — amount of time query was recompiled

select top 25 sql_text.text,

sql_handle,

plan_generation_num,

execution_count,

dbid,

objectid

from sys.dm_exec_query_stats a

cross apply sys.dm_exec_sql_text(sql_handle) as sql_text

where plan_generation_num >1

order by plan_generation_num desc

–To check all active requests that are running in parallel for a given session

select r.session_id,

r.request_id,

max(isnull(exec_context_id, 0)) as number_of_workers,

r.sql_handle,

r.statement_start_offset,

r.statement_end_offset,

r.plan_handle

from sys.dm_exec_requests r

join sys.dm_os_tasks t on r.session_id = t.session_id

join sys.dm_exec_sessions s on r.session_id = s.session_id

where s.is_user_process = 0x1

group by r.session_id, r.request_id,

r.sql_handle, r.plan_handle,

r.statement_start_offset, r.statement_end_offset

having max(isnull(exec_context_id, 0)) > 0

–To check how much memory SQL Server has allocated through AWE mechanism

select

sum(awe_allocated_kb) / 1024 as [AWE allocated, Mb]

from

sys.dm_os_memory_clerks

source:http://www.sqlserverspecialists.com/2012/11/script-to-identify-cpu-bottlenecks.html

Script to identify the CPU Bottlenecks – SQL Server