วันอังคารที่ 6 ธันวาคม พ.ศ. 2554

SQL Service Net command



Start and stop batchfile services via a batchfile

Case
Constantly running all Microsoft SQL Services on your development desktop/laptop could be a little too much.Especially when you're not developing, but starting and stopping via the control panel is tiresome...

Solution
You can stop/start a service via the command (or even better, put it in a batchfile):
Syntax
      NET START [service]
      NET STOP [service]
      NET PAUSE [service]
      NET CONTINUE [service] 
   
Key
   service : The service name as shown in Control Panel, Services

Apparently it does not matter whether you use the Service name or the Display name.  

Start batchfile SQL 2005:
@ECHO OFF
NET START "SQL Server (MSSQLSERVER)"
NET START "SQL Server Agent (MSSQLSERVER)"
NET START "SQL Server Integration Services"
NET START "SQL Server Analysis Services (MSSQLSERVER)"
NET START "SQL Server Reporting Services (MSSQLSERVER)"

Stop batchfile SQL 2005:
@ECHO OFF
NET STOP "SQL Server (MSSQLSERVER)"
NET STOP "SQL Server Agent (MSSQLSERVER)"
NET STOP "SQL Server Integration Services"
NET STOP "SQL Server Analysis Services (MSSQLSERVER)"
NET STOP "SQL Server Reporting Services (MSSQLSERVER)"



Start batchfile SQL 2008:
@ECHO OFF
NET START "MSSQLSERVER"
NET START "SQL Server Agent (MsSqlServer)"
NET START "SQL Server Integration Services 10.0"
NET START "MSSQLServerOLAPService"
NET START "ReportServer"

Stop batchfile SQL 2008:
@ECHO OFF
NET STOP "MSSQLSERVER"
NET STOP "SQL Server Agent (MsSqlServer)"
NET STOP "SQL Server Integration Services 10.0"
NET STOP "MSSQLServerOLAPService"
NET STOP "ReportServer" 

วันจันทร์ที่ 11 กรกฎาคม พ.ศ. 2554

Aggregation Design via Aggregation Manager

ได้ทำการ Research เืรื่องการเพิ่มประสิทธิภาพของ MDX Query
และได้พบว่าใน (VS) SQL Server 2005 ไม่มีเครื่องที่ช่วยสร้าง Aggregation เหมือนกับใน SQL 2008
เช่นใน Cube Design 2008 มี Tab Aggregations , Dimension Design มี Attribute relationship
ซึ่งทำให้การทำงานสะดวกขึ้นมาก

และนอกจากนั้นขอแนะนำเครื่องมือที่ดีมาก (ฟรี)  ตัวหนึ่งคือ Aggregation Manager
เครื่องมือตัวนี้จะช่วยให้เราสามารถสร้าง Aggregation ขึ้นมาและ Assign ไปยัง Partitions ที่มีได้
(แต่คิดว่ายังมี Bug อยู่ คือการ Assign Aggregation ไปยังหลาย Partitions ยังไม่สามารถทำได้ ทังที่มีเมนูการทำงานนี้อยู่  แก้ปัญหาโดยใช้ Default Tool ของ SQL Server Assign แทน)

และได้พบว่าจากเดิมที่ระบบสร้าง Aggregation ไว้ให้นั้นไม่ได้มีการใช้งานจริงๆจากผู้ใช้เลย
เนื่องจากระบบสร้าง Aggregation ไว้เฉพาะ Height Level ของข้อมูล ซึ่งไม่ตรงตามความต้องการจริง
ทำให้เมื่อมีการ Query ข้อมูลจะไม่เกิด Event "Get Data From Aggregation" ขึ้นเลย ซึ่งตรงนี้ผิดวัตถุประสงค์ของ OLAP Cube แน่นอน  
จากนั้นจึงได้ ทำการ Design Aggregation ให้ตรงความต้องการของผู้ใช้งาน และ Assign ไปยัง Partitions ต่างๆ
แล้วทำการ Process โดยการ Process Aggregation ที่ได้ Design นั้นไม่จำเป็นต้อง Process FULL
เพียงแค่ Process Index เท่านั้น และเมื่อทำการ Monitor Event จาก SQL Server profile พบว่า Query เดียวกันให้ผลที่แตกต่างกัน ก่อน/หลัง ReDesign Aggregation  โดยหลังจาก ReDesign Query ทำงานได้เร็วขึ้นมากเนื่องจากสามารถดึงข้อมูลจาก Aggregation ได้เลย ไม่จำเป็นต้องไปดึงข้อมูลจาก FACT Data อีก

จุดสังเกตที่พึงระวัง จากที่ได้ทดสอบกับการใชงานจริง
การ Process Increment กับ Aggregation ที่มีใน Measures Group จำเป็นที่จะต้อง Process Index ใหม่ทุกครั้ง
เพราะเมื่อทดสอบ Process Increment แต่ไม่ได้ Process Index จะไม่พบ Event "Get Data From Aggregation"
ซึ่งจุดนี้ยังไม่เคลียร์ 100% แต่คาดว่าระบบน่าจะต้องทำการ Re Index data ใหม่หลังจากมีการ Add New data เข้าระบบ


http://bidshelper.codeplex.com/wikipage?title=Aggregation%20Manager&ProjectName=bidshelper

วันศุกร์ที่ 29 เมษายน พ.ศ. 2554

Select multiple rows from single row data

Select multiple rows (records) from single row(record) data
กรณีที่ต้องการ Select ให้ได้จำนวน Record ตามจำนวนที่กำหนดเช่น

Name   | Qty
-----------
Dave   | 25
Nathan | 10
Chaim  | 8

คือต้องการให้ Dave ออกมา 25 Records , Nathan 10 Records และ Chaim 8 Records
วิธีทำโดยไม่ต้องเขียน Cursor ให้ยุ่งยากครับ ไปเจอมาจาก Stack Overflow
Ref site : http://stackoverflow.com/questions/5808083/get-multiple-records-from-one-record



;WITH T(Name,Qty) AS
(
SELECT 'Dave',25 union all
SELECT 'Nathan',10 union all
SELECT 'Chaim',8
), Numbers AS
(
SELECT number
FROM master..spt_values
WHERE   type='P' AND number > 0
)
SELECT Name
FROM T
JOIN Numbers ON  number  <= Qty

วันจันทร์ที่ 11 เมษายน พ.ศ. 2554

Move tempdb in SQL Server

USE tempdb
GO
EXEC sp_helpfile
GO



USE master
GO
ALTER DATABASE tempdb
    MODIFY FILE (NAME = tempdev, FILENAME = 'D:\SQL Databases\tempdb.mdf')
GO
ALTER DATABASE tempdb
    MODIFY FILE (NAME = templog, FILENAME = 'D:\SQL Databases\templog.ldf')
GO

วันจันทร์ที่ 28 มีนาคม พ.ศ. 2554

Reporting Service 2008 R2 , IE Not response when change parameters.

จากการทดสอบ Upgrade จาก SQL 2005 --> SQL 2008 R2
พบว่ารายงานที่เคยรันได้ปกติใน 2005 กลับไม่สามารถรันได้ใน 2008 R2 
ปัญหาที่พบคือ IE กิน CPU อย่างมากและก็ Not responseไป  ซึ่งได้ Search หาข้อมูลจากเว็บไมโครซอฟแล้ว
พบ Article นี้ซึ่งระบุว่าเป็น Bug   http://support.microsoft.com/kb/2276203
และต้องไป Download HotFix CU3 ที่  http://support.microsoft.com/kb/2261464
ได้ทดสอบ Install Hotfix นี้แล้วแต่แล้วปัญหาที่พบก็ยังไม่หายไป
ซึ่งตอนนี้ก็ยังไม่ทราบว่าจะแก้ปัญหานี้อย่างไร ทำให้การทดสอบเพื่อจะ Migrate ระบบจาก 2005 เป็น 2008 R2 ต้องติดปัญหาอยู่ตรงจุดนี้
และยังมีอีก Link หนึ่งที่มีผู้ใช้พบปัญหานี้ แต่ทาง Microsoft ยังไม่ได้มีคำตอบที่ชัดเจนแต่อย่างได 
-->  http://connect.microsoft.com/SQLServer/feedback/details/605780/ssrs-2008-r2-parameters-slow-response

หากท่านใดเคยพบปัญหานี้ รบกวน Post บอกหน่อยนะครับ
และถ้าผมพบวิธีแก้ปัญหานี้ผมจะ Post วิธีแก้ปัญหาโดยเร็วที่สุดครับผม


******* รวม Cumulative Update   1-6 for SQL Servier 2008 R2


 http://support.microsoft.com/kb/981356


###########PROBLEM SOLVED ##############
Download Commulative Update7 for SQL 2008 R2 

วันอังคารที่ 22 มีนาคม พ.ศ. 2554

Reporting Service, Deploy the operation has timeout

- Run Regedit
- Open  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
- Add new DWORD Value
- Naming -->MaxRequestBytes 
- Input --> 5242880  for value  set it to a value of 5242880 (5MB). (This number can be
raised or lowered).
- Restart server (best advise)
 or restart SSRS Service and go to cmd prompt run "net stop http" then "net start http".

Ref site : http://social.msdn.microsoft.com/Forums/en/sqlreportingservices/thread/0130046d-9313-483c-b7b8-90d915f1c048

วันพุธที่ 16 มีนาคม พ.ศ. 2554

Run SSIS Package from command prompt.

1 .Open command prompt
2 .Use dtexec utility
3. C:\  dtexec  /f   d:\ssis\myPackage.dtsx /de password999

/f = file dir
/de = decrypt password

If you have both 2005 and 2008 , you have to specify which version to be run.
By default is 2005
This is example for using dtexec of 2008 version

Run command prompt and specified Dtexec path like this
"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /f   d:\ssis\myPackage.dtsx /de password999

Ref site . http://msdn.microsoft.com/en-us/library/ms162810.aspx
Ref site . http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/744957ad-038a-46ba-aa70-0adab03a5f4d/

วันอังคารที่ 15 มีนาคม พ.ศ. 2554

วันศุกร์ที่ 11 มีนาคม พ.ศ. 2554

Visual studio 2005 VS 2008

 Reporting Service , Report designer , Query designer VS 2008 non formatting

ใครที่เคยใช้ VS Studio 2005 ในการ Design report (MDX) แล้วนั้น เมื่อมาเจอ VS 2008 เข้าไป
คงงงกันไปเลยทีเดียว ว่าทำไม Microsoft เอา Feature เกี่ยวกับการแสดง Formatting ของ MDX Syntax
ออกไปซะอย่างนั้น Y_Y เฮ้อ   ไม่เข้าใจจริง

Blog นี้เขียนอธิบายไว้เกี่ยวกับเรื่องการเปลี่ยนแปลงครั้งนี้นะครับ
http://blogs.socha.com/2009/05/upgrading-visual-studio-team-foundation.html

ส่วนตัวแล้วเซ็งมากๆกับเรื่องนี้  เพราะจริงๆ  มีแพลนจะ Upgrade Server เป็น SQL 2008 แต่ส่วนอื่นๆ ก็น่าใช้งาน ติดเรื่องนี้เรื่องเดียว ก็ไม่เข้าใจว่าจะงี่เง่าไปไหน


แล้วอีกอย่าง พอเข้าไปดูในเว็บจริงๆ  ที่อธิบายเรื่องนี้ไว้กลับแสดงรูปที่ไม่เป็นความจริง
ดังนี้ http://msdn.microsoft.com/en-us/library/ms403829%28v=SQL.100%29.aspx
ให้เลื่อนไปดูรูปด้านล่างนะครับ  รูปที่แสดงเป็น query ที่มี Formatting ซึ่งโกหกอ่ะ -*-

รูปภาพหลอกลวงจาก Microsoft


สรุปการเปลี่ยนแปลงที่เห็นได้ชัดเีดี่ยวกับ VS 2008 ที่กระทบต่อการทำ Reports

1. ของ VS 2005 การ Design report จะมี 3 Tab คือ Data , Layout , Preview  ของ VS 2008   Tab Data หายไป

VS 2005 Design Tab







VS 2008 Design Tab



2. Tab Data ที่หายไปใน VS 2008 จะต้อง DB click เข้าจากตัว Data set (เสียเวลานิดหน่อย)
3. Formatting MDX Query syntax หายเกลี้ยง เหลือเพียง Plain text ขาว ๆ ตัวหนังสือดำๆ -*- อันนี้ที่รับไม่ได้
เพราะส่วนใหญ่แล้วการทำรายงานคงไม่มีใครทำจาก Design view ที่จับลากๆ ๆ ๆ ๆ ได้หรอกนะ
ก็ Coding เองกันทั้งนั้น  ทีนี้จะทำไงล่ะ ตรวจสอบก็ยาก  หามาทุกวิธีแล้วก็ไม่มีทางแก้ได้ในตัว VS
มีแต่บอกว่าให้ไปเขียน Code จากตัว Management Studio มาแล้วมาแปะ  เซ็งจิต

VS 2005 Query Designer with Syntax formatting

วันจันทร์ที่ 28 กุมภาพันธ์ พ.ศ. 2554

Reporting service 2005 , Matrix , Table visibility expression BUG

Reporting service 2005 , Matrix and Table visibility hidden expression  BUG
Issue when design report that contain more than one template (matrix / table)

Example , I create a report that can use only one MDX Query set to generate multiple style of matrix view.
Then i decide to build template parameter  and let user choose what they want to view.
And i set the hidden property (under visibility of matrix) to show or hidden when user selected a template.
Expression : = IIF(template_id=1,FALSE,TRUE)   <------ That's mean user have selected the 1st template.
And this matrix will be show. It' seem to be alright when viewing from web browser .
But when export to excel file , +/- symbol is gone! , Toggle is not working!!! - -"


Why this happen to a basic logic ? I have tested so many case but no luck.And I'm not found solutions to solve this issue yet.


This error not found on SSRS 2008  Y_Y.

Shrink tempdb via command.

use tempdb
   go

   dbcc shrinkfile (tempdev, 10)
   go
   -- this command shrinks the primary data file

   dbcc shrinkfile (templog, 10)
   go
   -- this command shrinks the log file, look at the last paragraph.


sp_helpdb tempdb


sp_spaceused

วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2554

Assign multiple values in multiselection parameter in reporting service

เคยพบปัญหาที่ไม่สามารถตอบสนองผู้ใช้งานได้ในเรื่องของการดูรายการข้อมูลที่เฉพาะเจาะจงลงไป
ตามที่ระบุ เนื่องจากมีรายการเป็นจำนวนมาก  จากเดิมที่มีการสร้าง Parameter ที่เป็นแบบ Multi-Selection 
เพื่อตอบสนองความต้องการให้ผู้ใช้แล้ว 

ตัวอย่างเช่น Dimension ที่เป็นสาขาร้านค้าหลายพันสาขา
แต่ผู้ใช้ต้องการระบุร้านค้าประมาณ 700 สาขา กรณีนี้หากไม่ใช้ Adhoc Query  ในการจัดการแล้ว
การที่ผู้ใช้จะมานั่งคลิ๊กเลือกร้านค้าทั้งหมดที่ต้องการในการรันรายงานเพียงครั้งเดียวนั้นแทบจะเป็นไปไม่ได้เลย อีกทั้งยังอาจจะเกิดความผิดพลาดในการเลือกข้อมูลได้อีก ดังนั้นจึงได้หาวิธีการเพื่อแก้ปัญหานี้ขึ้น

และได้พบวิธีการคือ ทำการ Generate Member Unique ID ของ Dimension ที่ต้องการมาเป็น Text 
และเพิ่ม String Parameter ในรายงานขึ้นมา 1 ตัวเพื่อรองรับ Member ID ที่ได้ทำการ Generate มาแล้ว
เพื่อนำไป Assign ต่อยัง Multilection parameter ที่มีอยู่ก่อนแล้ว โดยเขียน Expression ที่ Default value ของ Parameter ที่ต้องการให้ถูก Assign ค่า

ตัวอย่าง Expression คือ =SPLIT(Parameters!para_MID_Manual.Value,",")
และ MID ที่ Generate text ได้คือ
[MID].&[100024],[MID].&[100045],[MID].&[100074]

จากตัวอย่างยกมาเพียงแค่ 3 Members เท่านั้น
เพียงเท่านี้ก็จะช่วยลดกระบวนการทำงานที่ยุกยากซับซ้อนของผู้ใช้งานได้แล้วครับ

วันอังคารที่ 8 กุมภาพันธ์ พ.ศ. 2554

Good article for Semi-Addtive measures in SQL Server (OLAP - SSAS)

http://www.databasejournal.com/features/mssql/article.php/3445761/Introduction-to-MSSQL-Server-2000-Analysis-Services-Semi-Additive-Measures-and-Periodic-Balances.htm

http://blogical.se/blogs/jahlen/archive/2009/09/16/unleashing-the-power-of-sql-server-enterprise-edition-part-1.aspx

วันพุธที่ 2 กุมภาพันธ์ พ.ศ. 2554

How to monitoring Shrink Database / File in SQL Server

วิธีการ Mornitoring percentage ของการ Shrink database หรือการ Shrink file ใน SQL Server


select  T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id)
                , R.cpu_time, R.total_elapsed_time, R.percent_complete
from    sys.dm_exec_requests R
                cross apply sys.dm_exec_sql_text(R.sql_handle) T