SQL Server Indonesia User Groups Community October 2008 - Posts - drowned in code

SQL Server Indonesia User Groups Community

SQL Server Indonesia User Groups Community
Welcome to SQL Server Indonesia User Groups Community Sign in | Join | Help
in Search

drowned in code

eat, sleep, breath, SQL

October 2008 - Posts

  • Report Builder 2.0 Released!

    image

    Folks,

    Report Builder 2.0 sudah di-release pada tanggal 17 Oktober yang lalu. Beritanya bisa dilihat disini, untuk mulai men-download bisa langsung kesini.

  • Invitation : TechNet SQL Server 2008 | Database Infrastructure Scalability

    Dear All,

    Berikut adalah undangan event TechNet SQL Server 2008 | Database Infrastructure Scalability yang akan digelar pada 22 Oktober 2008.

    technet-SQLserver08--22okt-800

    Untuk registrasi dan informasi lainnya, silakan kirim email ke dpeevent@hotmail.com

  • Mem-Publish Report dengan BIDS

    Pada hari selasa yang lalu saya menunjukkan bagaimana membuat tablix dan gauge menggunakan SQL Server Business Intelligence Studio (BIDS) pada sebuah workshop mengenai SQL Server 2008. Setelah selesai acara ada seorang peserta yang menanyakan apakah report tersebut hanya bisa dilihat lewat BIDS.

    BIDS adalah development tools yang dapat kita gunakan untuk membuat report. Setelah selesai dibuat, report tersebut kita publish ke Report Server untuk kemudian bisa kita browse melalui Report Manager. Berhubung notebook sudah saya matikan dan harus berebut makan siang (hehe) akhirnya saya berjanji untuk menulisnya di blog.

    Sebagai contoh, saya akan mem-publish project Tablix yang kemarin sempat saya tulis. Untuk melakukannya, step-step yang dapat kita lakukan adalah sebagai berikut:

    Pastikan SQL Server Reporting Services sudah jalan. Untuk mengeceknya, buka Reporting Services Configuration Manager

    image

    Catat alamat ReportServer yang terdapat pada bagian Web Service URL. Pada gambar dibawah, alamatnya adalah http://SQLServer2008:8080/ReportServer

    image

    Dari BIDS, buka project yang ingin kita publish menggunakan menu File > Open > Project/Solution...

    image

    Browse ke directory tempat kita menyimpan project, pilih TablixJabrix.sln lalu klik Open

    image

    Dari Solution Explorer, klik kanan pada nama project lalu pilih Properties

    image

    Pada TargetServerURL, isi dengan alamat Report Server, lalu klik OK

    image

    Klik kanan lagi pada nama project, lalu klik Deploy

    image

    Apabila berhasil, akan muncul pesan pada Output pane

    image

    Untuk melihat report, browse report manager menggunakan IE

    image

    Klik folder TablixJabrix, lalu klik report InternetSalesAmount

    image

    Posted Oct 18 2008, 05:36 AM by si_hendrik with no comments
    Filed under:
  • Tablix yang Gak Bikin Jabrix

    Download sample code

    Sudah pernah membuat matrix seperti ini?


    Di Reporting Services 2000 atau 2005 saya biasanya mengakalinya dengan cara seperti ini:


    Membuat dua buah matrix lalu meletakkannya dalam posisi yang bersebelahan, lalu size kolom pertama dan kedua saya pada matrix yang kedua dikecilkan sampai nyaris tidak terlihat agar seolah-olah hanya terdapat satu matrix di report. Bos saya sering menyebut saya seorang penipu karena melakukan hal ini, habis mau bagaimana lagi apabila ini adalah requirement user? Kalo mengambil istilah dosen saya, bikin matrix seperti itu tuh bikin jabrik karena apabila ada penambahan atau pengurangan subgroup atau kolom pada matrix yang pertama, perubahan column width, saya harus menggeser-geser matrix yang kedua agar posisinya bersebelahan dan tidak terlihat menumpuk.

    Tapi di Reporting Services 2008 hal ini tidak perlu saya lakukan lagi. SSRS 2008 memperkenalkan sebuah data region baru yang diberi nama Tablix, Table + Matrix. Kenapa disebut tablix adalah karena data region ini dapat memiliki fixed columns dan dynamic rows seperti table, dan juga dapat memiliki dynamic rows dan dynamic columns seperti matrix, dan kombinasi antara table dan matrix.
    Yang harus dipelajari dan diperhatikan sebelum membuat tablix adalah konsep mengenai bagaimana mendefinisikan row dan column untuk detail data, group data, dan untuk label dan total. Untuk setiap row yang terdapat pada tablix, row terdapat didalam atau diluar sebuah row group. Apabila row terdapat didalam row group, maka row tersebut akan di-repeat satu kali untuk setiap unique value pada group, yang disebut group instance. Apabila row terdapat diluar row group, maka row tersebut hanya diulang sekali sesuai dengan relasi pada group tersebut. Row yang berada diluar semua row group akan bersifat statis dan hanya di-repeat satu kali, contohnya table header atau footer. Hal yang sama juga berlaku untuk column. Untuk penjelasan yang lebih detail mengenai tablix silakan buka Books Online.

    Di SQL Server 2008, sample-nya tidak di-bundle dalam installer-nya akan tetapi ditaruh di codeplex. Karena saya tidak memiliki koneksi internet yang cepat, akhirnya saya putuskan untuk meng-copy database AdventureWorksDW yang terdapat di SQL Server 2005 ke instance SQL Server 2008, lalu mem-process cube AdventureWorks 2005 ke Analysis Services 2008. Untuk membuat tablix seperti pada gambar diatas saya menggunakan cube AdventureWorks, mengambil data category dan subcategory dari Dimension Product, Sales Teritory Group dari Dimension Sales Teritory, Calendar Year dari Dimension Date, dan Internet Sales Amount dari FactSales. Category diletakkan pada rows dan subcategory sebagai subgroup-nya. Column akan memiliki dua group yaitu Sales Teritory Group dan Calendar Year, sedangkan Internet Sales Amount akan menjadi detail data.

    Buka SQL Server Business Intelligence Development Studios, klik menu File > New > Project…

    Pilih Business Intelligence Project dari Project Types, pilih Report Server Projects dari Templates, beri nama TablixJabrix lalu klik OK


    Tambahkan satu shared datasource ke SSAS AdventureWorksDW dan beri nama AdventureWorksDW


    Tambahkan satu report dan beri nama InternetSalesAmount.rdl


    Setelah report InternetSalesAmount terbuka, buka Report Data Pane dan tambahkan satu datasource ke shared datasource AdventureWorksDW lalu beri nama DatasourceAdventureWorksDW


    Tambahkan satu dataset dari Report Data Pane dengan nama DatasetInternetSalesAmount, pilih DatasourceAdventureWorksDW sebagai Data Source. Klik Query Designer, lalu tambahkan Internet Sales Amount dari Measures, Calendar Year dari dimension Date, Category dan Subcategory dari dimension Product, dan Sales Teritory Group dari dimension Sales Teritory. Klik Ok untuk menutup Query Designer, lalu klik OK untuk menutup dataset


    Pada Design Tab, klik kanan lalu pilih insert > Textbox dan beri value Internet Sales Report
    Tambahkan satu buah matrix dengan cara klik kanan pada Design Tab, lalu pilih Insert > Matrix. Selain dengan matrix, kita juga bisa menggunakan table dan list.

     

    Pada properties, pilih DatasetInternetSalesAmount sebagai DataSetName

    Untuk menambah category pada row dengan me-roll over mouse ke bagian row dari matrix, pada saat muncul icon , klik icon tersebut lalu pilih Category


    Tambahkan subgroup subcategory pada row dengan klik kanan pada Row Groups Category, pilih Add Group > Child Group…
    Pilih [SubCategory] pada group by, lalu klik OK


    Tambahkan column group Sales Territory Group dengan me-roll over mouse ke bagian column dari matrix, pada saat muncul icon , klik icon tersebut lalu pilih Sales_Territory_Group


    Tambahkan Calendar Year pada column dengan klik kanan pada Column Groups Sales_Territory_Group, pilih Add Group > Adjacent After…

    Pilih [Calendar_Year] pada group by, lalu klik OK


    Roll over mouse pada bagian data yang terdapat di column [Sales_Territory_Group], pada saat muncul icon , klik icon tersebut lalu pilih Internet_Sales_Amount


    Roll over mouse pada bagian data yang terdapat di column [Calendar_Year], pada saat muncul icon , klik icon tersebut lalu pilih Internet_Sales_Amount


    Selesai! Dan berikut adalah hasilnya pada preview tab yang telah saya beri format number dan diberi sedikit warna


  • Membuat Gauge Semudah 1-2-3

    Download sample code
    Data region baru yang diperkenalkan pada SQL Server Reporting Services 2008 adalah gauge. Gauge biasanya digunakan sebagai Key Performance Indicator (KPI) dan hanya menampilkan satu nilai dari dataset. Contoh yang paling sering saya gunakan adalah untuk membandingkan antara data target dan data actual.
    Gauge ini ada dua tipe yaitu radial yang bentuknya seperti speedometer dan linear yang seperti thermometer. Yang harus diperhatikan pada saat kita membuat gauge adalah bahwa pada saat kita telah memilih tipenya, kita tidak dapat mengubahnya seperti pada chart. Sehingga pada saat kita ingin mengubah sebuah gauge yang bentuknya radial menjadi linear kita harus menghapus gauge tersebut untuk kemudian menambahkan kembali dengan gauge yang berbentuk linear.
    Berikut adalah ilustrasi dari elemen-elemen yang terdapat pada sebuah panel gauge yang saya ambil dari Books Online


     
    Dalam kesempatan ini, saya akan membuat gauge yang menampilkan perbandingan antara target penjualan sebuah product dengan penjualan sebenarnya.


    Buka SQL Server Business Intelligence Development Studios, klik menu File > New > Project…
    Pilih Business Intelligence Project dari Project Types, pilih Report Server Projects dari Templates, beri nama Gauge123 lalu klik OK



    Tambahkan satu shared datasource ke Microsoft SQL Server dan beri nama Localhost



    Tambahkan satu report dan beri nama TargetVersusActual.rdl



    Setelah report TargetVersusActual terbuka, buka Report Data Pane dan tambahkan satu datasource ke shared datasource Localhost lalu beri nama DatasourceLocalhost



    Tambahkan satu dataset dari Report Data Pane dengan nama DatasetTargetActual, pilih DatasourceLocalhost sebagai Data Source dengan query Select 'Home Appliance' as Product, 800 as Actual, 1000 as Target. Please keep in mind bahwa ini hanyalah contoh, jadi saya hanya membuat satu baris data saja. Pada kenyataannya kita dapat membuat lebih dari satu baris data, dan SSRS akan meng-summarize datanya. Tentu sum digunakan sebagai nilai default, kita juga dapat membuat kalkulasi yang lain menggunakan expression.



    Pada Design Tab, klik kanan lalu pilih insert > Textbox dan beri value Target Versus Actual Report
    Tambahkan satu buah gauge dengan cara klik kanan pada Design Tab, lalu pilih Insert > Gauge. Pilih Gauge yang bentuknya radial. Lalu klik OK.



    Pada properties, pilih DatasetTargetVersusActual sebagai DataSetName
    Klik kanan pada gauge, lalu pilih menu Gauge > Scale Properties...
    Pada tab General, isi nilai Maximum dengan expression [Sum(Target)], lalu klik OK. Ini akan membuat scale gauge berkisar antara 0 dan target



    Klik kanan pada gauge, lalu pilih menu Gauge > Pointer Properties…
    Isi Value dengan expression [Sum(Actual)], lalu klik OK. Ini akan membuat pointer menunjuk ke nilai actual



    Klik kanan pada gauge, lalu pilih menu Gauge > Range Properties…
    Pada tab general, isi Start Range at Scale Value dengan 0, dan End Range At Scale Value dengan [Sum(Target)]



    Pada tab Fill, pilih color dengan warna red, secondary color dengan warna Lime, lalu klik OK. Ini akan membuat range gauge berwarna merah bergradien hijau dan menjadi indicator yang mudah untuk dilihat. Pada saat pointer menunjuk ke range yang berwarna semakin merah menandakan bahwa actual masih jauh dari target, dan sebaliknya pada saat menunjuk ke range yang berwarna semakin hijau menandakan bahwa actual mendekati target.



    Report telah selesai dibuat, klik tab preview untuk melihat hasilnya.



  • Tipe Data Date dan Time di SQL Server 2008

    Di SQL Server 2008 terdapat 4 tipe data baru untuk date dan time yaitu date, time, datetime2 dan datetimeoffset.

    Date

    Seperti namanya, tipe data ini hanya berisi date saja dan tidak menyimpan time seperti datetime. Dalam banyak aplikasi, saya sering menemui kolom yang hanya membutuhkan date saja. Pada SQL 2005 semuanya disimpan dalam kolom yang tipenya datetime atau smalldatetime. Dari sisi storage tipe data date hanya memakan 3 bytes, bandingkan dengan datetime yang menggunakan 8 bytes.

    Contoh query untuk membandingkan presisi antara date dan datetime:

    declare @currentDateTime as datetime = '2008-08-02 12:00:00'

    select @currentDateTime

    --hasilnya 2008-08-02 12:00:00.000

     

    declare @currentDate as date = '2008-08-02 12:00:00'

    select @currentDate

    --hasilnya 2008-08-02

     

    Time

    Time adalah tipe data yang berisi time antara 00:00:00.0000000 dan 23:59:59.9999999 dan memakan storage 5 bytes.

    Contoh query untuk membandingkan presisi antara date, smalldatetime dan datetime:

    declare @currentDateTime as datetime = '2008-08-02 12:00:00'

    select @currentDateTime

    --hasilnya 2008-08-02 12:00:00.000

     

    declare @currentSmallDateTime as smalldatetime = '2008-08-02 12:00:00'

    select @currentSmallDateTime

    --hasilnya 2008-08-02 12:00:00

     

    declare @currentTime as time = '2008-08-02 12:00:00'

    select @currentTime

    --hasilnya 12:00:00.0000000

     

    Datetime2

    Datetime2 adalah tipe data yang dapat kita anggap sebagai ekstensi datetime yang memiliki range tanggal dan presisi yang lebih besar dibandingkan datetime. Range tanggal datetime2 adalah antara 1 januari 1 hingga 31 desember 9999 (bandingkan dengan datetime yang range tanggal nya antara 1 januari 1753 dan 31 desember 9999). Sedangkan untuk ukuran presisi, datetime 2 memiliki presisi hingga 7 digit sementara datetime 3 digit. Asyiknya, dengan presisi yang lebih akurat dibandingkan dengan datetime, datetime2 menghabiskan storage maksimal yang sama dengan datetime yaitu 8 bytes.

    Contoh query untuk membandingkan presisi antara datetime dan datetime2:

    declare @currentDateTime as datetime = '2008-08-02 12:00:00'

    select @currentDateTime

    --hasilnya 2008-08-02 12:00:00.000

     

    declare @currentDateTime2 as datetime2(7) = '2008-08-02 12:00:00'

    select @currentDateTime2

    --hasilnya 2008-08-02 12:00:00.0000000

     

    Datetimeoffset

    Ini nih tipe data baru di SQL Server 2008 yang saya rasa sangat berguna sekali apabila kita men-develop aplikasi yang digunakan di tempat yang berbeda zona waktunya. Datetimeoffset adalah tipe data seperti datetime2 dan memiliki zona waktu. Bayangkan apabila kita memiliki aplikasi yang digunakan di tiga cabang yang terdapat di bandung(WIB), makasar (WITA), dan jayapura (WIT). Bukankah akan membantu dan menyenangkan apabila pada saat aplikasi menampilkan data yang berhubungan dengan waktu, waktu yang ditampilkan sesuai dengan zona waktu nya masing-masing?

    Contoh query untuk membandingkan waktu antara WIB, WITA dan WIT:

    declare @currentDateTime as datetimeoffset = '2008-09-02 12:00:00 +07:00'

    select @currentDateTime as WIB

    --hasilnya 2008-09-02 12:00:00.0000000 +07:00

     

    select SWITCHOFFSET(@currentDateTime,'+08:00') as WITA

    --hasilnya 2008-09-02 13:00:00.0000000 +08:00

     

    select SWITCHOFFSET(@currentDateTime,'+09:00') as WIT

    --hasilnya 2008-09-02 14:00:00.0000000 +09:00

  • Login ke SQL Menggunakan Windows Authentication

    Setahun terakhir ini saya sering bertemu dengan orang-orang yang kesuliltan pada saat login ke SQL menggunakan windows authentication. Kesulitan mereka terjadi pada saat SQL Server tidak berada di localhost, dan atau komputer/notebook yang digunakan tidak join domain sementara server nya join domain. Untuk mengatasinya, biasanya server authentication di-set menjadi SQL Server and Windows Authentication Mode lalu pada saat login autentikasi yang digunakan adalah SQL Server Authentication. Cara ini berhasil apabila kita akan login ke database engine, tapi bagaimana kalau akan login ke Analysis Services atau Integration Services yang tidak bisa menggunakan SQL Server Authentication? Ternyata ada teman saya yang mengakalinya dengan cara men-set password administrator di localhost-nya sama dengan password administrator di komputer server. Dengan cara ini dia berhasil login dari localhost ke server Analysis Services sebagai administrator.

    Saya rasa kedua cara diatas adalah cara yang kurang engineering (meminjam istilah yang sering dibilang bos saya), dan tidak sebaiknya dilakukan. Menurut pendapat saya cara terbaik dan teraman untuk login ke SQL adalah dengan menggunakan Windows Authencation dan tidak mengakalinya seperti yang dilakukan teman saya. Ada dua cara yang dapat kita lakukan apabila ingin login ke SQL Server.

    Cara pertama (dan menurut saya yang paling mudah)

    Buka windows explorer

    Ketik nama server di address bar, contoh: \\SQLServer

    Pada saat muncul dialog box untuk memasukkan user name dan password, ketikkan user name yang dapat login ke server (contoh: Domain\SQLUser atau SQLUser@domain.com) berikut password-nya, centang remember password, lalu klik OK.

    Cara Kedua

    Windows XP

    Buka Control Panel > User Accounts

    Pilih user account kita dari list user account

    Klik Manage my network passwords dari related tasks

    Klik button Add

    Ketik nama server di textbox Server (contoh: SQLServer)

    Ketik user name di textbox User Name (contoh: Domain\SQLUser atau SQLUser@Domain.com)

    Ketik password di textbox password, klik OK, klik Close

     

    Windows 2003

    Buka Control Panel > Stored User Names and Passwords

    Klik button Add

    Ketik nama server di textbox Server (contoh: SQLServer)

    Ketik user name di textbox User Name (contoh: Domain\SQLUser atau SQLUser@Domain.com)

    Ketik password di textbox password, klik OK, klik Close

     

    Windows Vista atau Windows 2008

    Buka Control Panel > User Accounts

    Dari task, klik link Manage Your Network Password

    Klik button Add…

    Ketik nama server di textbox Log on to (contoh: SQLServer)

    Ketik user name di textbox User Name (contoh: Domain\SQLUser atau SQLUser@Domain.com)

    Ketik password di textbox Password

    Pilih radio button A Windows logon credential di credential type, klik OK, klik Close

     

    Dengan kedua cara diatas pada saat kita login menggunakan SQL Server Management Studio dan memilih Windows Authentication Mode sebagai tipe autentikasi, identitas user yang dikirim ke server adalah identitas user yang telah kita simpan tadi.

  • Menyederhanakan Insert Statement

    Dengan SQL Server 2008, kita dapat menyederhanakan dua atau lebih insert statement ke dalam satu table menjadi satu insert statement. Misalkan kita akan meng-insert tiga rows ke dalam temporary table @table, di SQL Server 2005 kita akan melakukannya seperti berikut:

    DECLARE @table AS TABLE (id int, col1 varchar(10))

    INSERT INTO @table (id,col1) VALUES (1,'test 1')

    INSERT INTO @table (id,col1) VALUES (2,'test 2')

    INSERT INTO @table (id,col1) VALUES (3,'test 3')

     

    Hasil dari query diatas:

    (1 row(s) affected)

     

    (1 row(s) affected)

     

    (1 row(s) affected)

     

    Bandingkan dengan SQL Server 2008:

    declare @table as table(id int, col1 varchar(10))

    insert into @table (id,col1) values (1,'test1'),(2,'test2'), (3,'test3')

     

    Hasilnya:

    (3 row(s) affected)

     

    Jauh lebih sederhana.

More Posts
Powered by Community Server (Commercial Edition), by Telligent Systems