วันอังคารที่ 13 มีนาคม พ.ศ. 2555

Create an Analysis Services Project Based on an Existing Analysis Services Database

http://technet.microsoft.com/en-us/library/ms365361.aspx


To create an Analysis Services project using the Import Analysis Services 9.0 Database template

  1. On the File menu, select New and then select Project, or press Ctrl+Shift+N, to display the New Project dialog box, or click New Project on the toolbar.
  2. Select Business Intelligence Projects from the Project types pane in the New Project dialog box.
  3. Select Import Analysis Services 9.0 Database from the Visual Studio installed templates category of the New Project dialog box.
  4. Type the name of the project in the Name text box.
  5. Type or select the folder in which to store the files for the project in the Location dropdown list, or click Browse to select a folder.
  6. Either select Add to Solution to add the new project to the existing solution in the Solution dropdown list, or select Create new Solution to create a new solution.
  7. If Create new Solution is selected in Solution, select Create directory for solution to create a new folder for the new solution, then type the name of the new solution in Solution Name.
  8. Click OK.

Completing the Import Analysis Services 9.0 Database Wizard

  1. On the Welcome to the Import Analysis Services 9.0 Database Wizard page, click Next.
  2. On the Source Database page, specify the server and the database from which the wizard will extract the contents and create the Analysis Services project, and then click Next.
    You can either type the database name or query the server to view the existing databases on the server.
  3. When the wizard finishes extracting the contents of the Analysis Services 9.0 database, click Finish on the Completing the Wizard page.
  4. Open the Solution Explorer window to view the contents of the project.

วันอังคารที่ 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