Wednesday 29 February 2012

unable to start the SQL server and getting error message "Win32 or C++ exception, or by an access violation encountered during exception handling"

 SQL Error :
Event Type:        Error
Event Source:    MSSQL$VSDBW07
Event Category:                (2)
Event ID:              17311
Date:                     9/18/2011
Time:                    2:10:56 AM
User:                     N/A
Computer:          HQRDCA0068
Description:
SQL Server is terminating because of fatal exception c0000005. This error may be caused by an unhandled Win32 or C++ exception, or by an access violation encountered during exception handling. Check the SQL error log for any related stack dumps or messages. This exception forces SQL Server to shutdown. To recover from this error, restart the server (unless SQLAgent is configured to auto restart).

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
Cause of the issue : Problem was due to .NET Framework v2.0 corruption.

Resoultion:
1)   In folder C:\WINNT\Microsoft.NET\Framework  rename folder  v2.0.50727  to tmp_v2.0.50727
        In folder C:\WINNT\Microsoft.NET\Framework64  rename folder v2.0.50727  to tmp_v2.0.50727

2) Since removal of .NET framework from control panel was not possible (You should verify)
We followed this kb article:  http://support.microsoft.com/kb/908077

3) Launch SQL server install for SQL engine and perform the first steps until .NET framework got installed then cancel the installation
4) Check and ensure the folder v2.0.50727  got created in C:\WINNT\Microsoft.NET\Framework64
5) Launch SQL server install for SQL tools and perform the first steps until .NET framework got installed then cancel the installation
6) Check and ensure the folder v2.0.50727  got created in C:\WINNT\Microsoft.NET\Framework 
7) Server restart
8) Test
9) Remove folder tmp_v2.0.50727 from C:\WINNT\Microsoft.NET\Framework  and C:\WINNT\Microsoft.NET\Framework64

Robocopy (Robust File and Folder Copy)

What is Robocopy ?

Robocopy, or "Robust File Copy", is a command-line directory replication
command.  Normally it used to copy folders and files from one location to another location without network error.   Also it is bit fast when compare with normal copy.


Syntax :
robocopy "\\SERVERNAME\G$\MS_SQLServer\SQL2005\9000\Latest SP4 Express and hotfix" "F:\Software" /E

Source options
                /S : Copy Subfolders.
                /E : Copy Subfolders, including Empty Subfolders.

script to find the rowcounts of all the tables in a database

script to find the rowcounts of all the tables in a database


SELECT o.name, i.[rows]
FROM sysobjects o
INNER JOIN sysindexes i
ON  o.id = i.id
WHERE (o.type = 'u') AND (i.indid = 1)
ORDER BY o.name

Enable xp_cmdshell

<><><><>
Enable the xp_cmdshell
---------------------------
use master
EXEC master.dbo.sp_configure 'show advanced options', 1
Go
RECONFIGURE with override
Go
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
Go
RECONFIGURE with override
Go
EXEC master.dbo.sp_configure 'show advanced options', 0
Go
RECONFIGURE with override
---------------------------

Unable to uninstall SQL Server fully from control panel

When we tried to uninstall the SQL server however service not went from windows service.

Resolution:

delete windows service from command line:

Syntax :

sc delete <service-name>

SQL Server Patching Error message : "This installation is forbidden by system policy. Contact your system administrator."


Error message :
 

Info 1625.This installation is forbidden by system policy.  Contact your system administrator.
f:\948292ea6c815ff61807b43e22\setup\sqlncli.msi
MSI (s) (A4:F4) [07:00:06:983]: User policy value 'DisableRollback' is 0
MSI (s) (A4:F4) [07:00:06:983]: Machine policy value 'DisableRollback' is 0
MSI (s) (A4:F4) [07:00:06:983]: Incrementing counter to disable shutdown. Counter after increment: 0
MSI (s) (A4:F4) [07:00:06:983]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (A4:F4) [07:00:06:983]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (A4:F4) [07:00:06:983]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 3: 2
MSI (s) (A4:F4) [07:00:06:983]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\InProgress 3: 2
MSI (s) (A4:F4) [07:00:06:983]: Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1



Cause : This error message occuring due to "security policy issue on this server." Policy not allowing sql server to install the windows installer.




Resoultion : Change the registry key like below to resolve this patching issue.

In this case you need modify the registry key : HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer and modify the value of the key DisableMSI from 2 to 0
Don’t forget to set it back to 2 after the install


Info 1625.This installation is forbidden by system policy.  Contact your system administrator.”

How to Change Maintenance plan job owner into sa


How to Change Maintenance plan job owner into sa  :

EXEC MSDB.dbo.sp_update_job
@job_name = 'DailyBackups',
@owner_login_name = 'sa'
GO

Saturday 25 February 2012

SQL SERVER – 2005 – Start Stop Restart SQL Server From Command Prompt

Very frequently I use following command prompt script to start and stop default instance of SQL Server. Our network admin loves this commands as this is very easy.
Click Start >> Run >> type cmd to start command prompt.
Start default instance of SQL Server
net start mssqlserver
Stop default instance of SQL Server
net stop mssqlserver
Start and Stop default instance of SQL Server.
You can create batch file to execute both the commands together.

Friday 24 February 2012

SQL SERVER – Fragmentation – Detect Fragmentation and Eliminate Fragmentation

What is Fragmentation? How to detect fragmentation and how to eliminate it?
Storing data non-contiguously on disk is known as fragmentation. Before learning to eliminate fragmentation, you should have a clear understanding of the types of fragmentation. We can classify fragmentation into two types:
  • Internal Fragmentation: When records are stored non-contiguously inside the page, then it is called internal fragmentation. In other words, internal fragmentation is said to occur if there is unused space between records in a page. This fragmentation occurs through the process of data modifications (INSERT, UPDATE, and DELETE statements) that are made against the table and therefore, to the indexes defined on the table. As these modifications are not equally distributed among the rows of the table and indexes, the fullness of each page can vary over time. This unused space causes poor cache utilization and more I/O, which ultimately leads to poor query performance.
  • External Fragmentation: When on disk, the physical storage of pages and extents is not contiguous. When the extents of a table are not physically stored contiguously on disk, switching from one extent to another causes higher disk rotations, and this is called Extent Fragmentation.
Index pages also maintain a logical order of pages inside the extent. Every index page is linked with previous and next page in the logical order of column data. However, because of Page Split, the pages turn into out-of-order pages. An out-of-order page is a page for which the next physical page allocated to the index is not the page pointed to by the next-page pointer in the current leaf page. This is called Logical Fragmentation.
Ideal non-fragmented pages are given below:
Statistics for table scan are as follows:
  • Page read requests: 2
  • Extent switches: 0
  • Disk space used by table: 16 KB
  • avg_fragmentation_in_percent: 0
  • avg_page_space_used_in_percent: 100
Following are fragmented pages:
In this case, the statistics for table scan are as follows:
  • Page read requests: 6
  • Extent switches: 5
  • Disk space used by table: 48 KB
  • avg_fragmentation_in_percent > 80
  • avg_page_space_used_in_percent: 33
How to detect Fragmentation: We can get both types of fragmentation using the DMV: sys.dm_db_index_physical_stats. For the screenshot given below, the query is as follows:
SELECT OBJECT_NAME(OBJECT_ID), index_id,index_type_desc,index_level,
avg_fragmentation_in_percent,avg_page_space_used_in_percent,page_count
FROM sys.dm_db_index_physical_stats
(DB_ID(N'AdventureWorksLT'), NULL, NULL, NULL , 'SAMPLED')
ORDER BY avg_fragmentation_in_percent DESC
Along with other information, there are two important columns that for detecting fragmentation, which are as follows:
  • avg_fragmentation_in_percent: This is a percentage value that represents external fragmentation. For a clustered table and leaf level of index pages, this is Logical fragmentation, while for heap, this is Extent fragmentation. The lower this value, the better it is. If this value is higher than 10%, some corrective action should be taken.
  • avg_page_space_used_in_percent: This is an average percentage use of pages that represents to internal fragmentation. Higher the value, the better it is. If this value is lower than 75%, some corrective action should be taken.
Reducing fragmentation:
  • Reducing Fragmentation in a Heap: To reduce the fragmentation of a heap, create a clustered index on the table. Creating the clustered index, rearrange the records in an order, and then place the pages contiguously on disk.
  • Reducing Fragmentation in an Index: There are three choices for reducing fragmentation, and we can choose one according to the percentage of fragmentation:
    • If avg_fragmentation_in_percent > 5% and < 30%, then use ALTER INDEX REORGANIZE: This statement is replacement for DBCC INDEXDEFRAG to reorder the leaf level pages of the index in a logical order. As this is an online operation, the index is available while the statement is running.
    • If avg_fragmentation_in_percent > 30%, then use ALTER INDEX REBUILD: This is replacement for DBCC DBREINDEX to rebuild the index online or offline. In such case, we can also use the drop and re-create index method.
    • (Update: Please note this option is strongly NOT recommended)Drop and re-create the clustered index: Re-creating a clustered index redistributes the data and results in full data pages. The level of fullness can be configured by using the FILLFACTOR option in CREATE INDEX.

SQLAGENT CAN'T START

Error message in the event log:
 
SQLServerAgent could not be started (reason: SQLServerAgent must be able to connect to SQLServer as SysAdmin, but '(Unknown)' is not a member of the SysAdmin role).


Resolution:

Agent XPs wasn't enabled...

So need to enabled it using this script:


sp_configure 'show advanced options', 1;
GO
 RECONFIGURE;
GO
sp_configure 'Agent XPs', 1;
GO
 RECONFIGURE
GO

Sunday 19 February 2012

Database Mail in SQL Server 2005

The SQL Mail problems, that we faced in SQL Server 7.0 and 2000, are no more. SQL Server 2005 supports and uses SMTP email now and there is no longer a need to MAPI client to send email. In SQL Server 2005, the mail feature is called Database Mail. In this article, I am going to demonstrate step-by-step, with illustrations, how to configure Database Mail and send email from SQL Server.
Database Mail has four components.
1.     Configuration Component
Configuration component has two sub components. One is the Database Mail account, which contains information such as the SMTP server login, Email account, Login and password for SMTP mail.
The Second sub component is Database Mail Profile. Mail profile can be Public, meaning members of DatabaseMailUserRole in MSDB database can send email. For private profile, a set of users should be defined.
2.     Messaging Component
Messaging component is basically all of the objects related to sending email stored in the MSDB database.
3.     Database Mail Executable
Database Mail uses the DatabaseMail90.exe executable to send email.
4.     Logging and Auditing component
Database Mail stores the log information on MSDB database and it can be queried using sysmail_event_log.
Step 1
Before setting up the Database Mail profile and accounts, we have to enable the Database Mail feature on the server. This can be done in two ways. The first method is to use Transact SQL to enable Database Mail. The second method is to use a GUI.
In the SQL Server Management Studio, execute the following statement.
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'Database Mail XPs',1
--go
--sp_configure 'SQL Mail XPs',0
go
reconfigure 
go
Alternatively, you could use the SQL Server Surface area configuration. Refer Fig 1.0.

Fig 1.0
Step 2
The Configuration Component Database account can be enabled by using the sysmail_add_account procedure. In this article, we are going create the account, "MyMailAccount," using mail.optonline.net as the mail server and
makclaire@optimumonline.net as the e-mail account.
Please execute the statement below.
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'MyMailAccount',
    @description = 'Mail account for Database Mail',
    @email_address = 'makclaire@optonline.net',
    @display_name = 'MyAccount',
 @username='makclaire@optonline.net',
 @password='abc123',
    @mailserver_name = 'mail.optonline.net'
Step 3
The second sub component of the configuration requires us to create a Mail profile.
In this article, we are going to create "MyMailProfile" using the sysmail_add_profile procedure to create a Database Mail profile.
Please execute the statement below.
EXECUTE msdb.dbo.sysmail_add_profile_sp
       @profile_name = 'MyMailProfile',
       @description = 'Profile used for database mail'
Step 4
Now execute the sysmail_add_profileaccount procedure, to add the Database Mail account we created in step 2, to the Database Mail profile you created in step 3.
Please execute the statement below.
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'MyMailProfile',
    @account_name = 'MyMailAccount',
    @sequence_number = 1
Step 5
Use the sysmail_add_principalprofile procedure to grant the Database Mail profile access to the msdb public database role and to make the profile the default Database Mail profile.
Please execute the statement below.
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'MyMailProfile',
    @principal_name = 'public',
    @is_default = 1 ;
Step 6
Now let us send a test email from SQL Server.
Please execute the statement below.
declare @body1 varchar(100)
set @body1 = 'Server :'+@@servername+ ' My First Database Email '
EXEC msdb.dbo.sp_send_dbmail @recipients='mak_999@yahoo.com',
    @subject = 'My Mail Test',
    @body = @body1,
    @body_format = 'HTML' ;
You will get the message shown in Fig 1.1.

Fig 1.1
Moreover, in a few moments you will receive the email message shown in Fig 1.2.

Fig 1.2
You may get the error message below, if you haven't run the SQL statements from step 1.
Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of
component 'Database Mail XPs' because this component is turned off as part of
the security configuration for this server. A system administrator can enable
the use of 'Database Mail XPs' by using sp_configure. For more information
about enabling 'Database Mail XPs', see "Surface Area Configuration"
in SQL Server Books Online. 
You may see this in the database mail log if port 25 is blocked. Refer Fig 1.3.

Fig 1.3
Please make sure port 25 is not blocked by a firewall or anti virus software etc. Refer Fig 1.4.

Fig 1.4
Step 7
You can check the configuration of the Database Mail profile and account using SQL Server Management Studio by right clicking Database Mail [Refer Fig 1.5] and clicking the Configuration. [Refer Fig 1.6]

Fig 1.5

Fig 1.6
Step 8
The log related to Database Mail can be viewed by executing the statement below. Refer Fig 1.7.
SELECT * FROM msdb.dbo.sysmail_event_log

Fig 1.7

Conclusion

This article has demonstrated step-by-step instructions, with illustrations, how to configure Database Mail and send email from SQL Server.

SQL Server 2005 Reporting Services Tutorial

In this chapter:

SSRS Tutorial: The Reporting Services Architecture

For a relatively new product, Reporting Services has a quite complex architecture. The full Reporting Services architecture includes development tools, administration tools, and report viewers. There are a number of ways to get to Reporting Services pro grammatically, including SOAP and WMI interfaces.
Figure 18-1 shows a simplified diagram of the main Reporting Services components that we'll be using in this chapter.
Figure 18-1: Report Server architecture
Figure 18-1: Report Server architecture
In this chapter you'll learn about these components:
  • Report Server is the core engine that drives Reporting Services.
  • Report Manager is a Web-based administrative interface for Reporting Services.
  • Report Designer is a developer tool for building complex reports.
  • Report Builder is a simplified end-user tool for building reports.
  • The Report Server database stores report definitions. Reports themselves can make use of data from many different data sources.

SSRS Tutorial: Using Report Designer

Reporting Services includes two tools for creating reports:
  • Report Designer can create reports of any complexity that Reporting Services supports, but requires you to understand the structure of your data and to be able to navigate the Visual Studio user interface.
  • Report Builder provides a simpler user interface for creating ad hoc reports, directed primarily at business users rather than developers. Report Builder requires a developer or administrator to set up a data model before end users can create reports.
We'll start our tour of Reporting Services with Report Designer. Report Designer runs inside the Business Intelligence Development Studio shell, and offers several ways to create reports. You can either use the Report Wizard to quickly create a report, or you can use a set of design tools to build a report from scratch. You can also use the design tools to modify a report created with the wizard.
Using the Report Wizard
The easiest way to create a report in Report Designer is to use the Report Wizard. Like all wizards, the Report Wizard walks you through the process in step-by-step fashion. You can make the following choices in the wizard:
  • The data source to use
  • The query to use to retrieve data
  • Whether to use a tabular or matrix layout for the report
  • How to group the retrieved data
  • What visual style to use
  • Where to deploy the finished report
Try It!
To create a simple report using the Report Wizard, follow these steps:
  1. Launch Business Intelligence Development Studio.
  2. Select File > New >Project.
  3. Select the Business Intelligence Projects project type.
  4. Select the Report Server Project Wizard template.
  5. Name the new report ProductReport1 and pick a convenient location to save it in.
  6. Click OK.
  7. Read the first page of the Report Wizard and click Next.
  8. Name the new data source AdventureWorksDS.
  9. Click the Edit button.
  10. Log on to your test server.
  11. Select the AdventureWorks database.
  12. Click OK.
  13. Click the Credentials button.
  14. Select Use Windows Authentication.
  15. Click OK.
  16. Check the Make This a Shared Data Source checkbox. This will make this particular data source available to other Reporting Services applications in the future.
  17. Click Next.
  18. Click the Query Builder button.
  19. If the full query designer interface does not display by default, click the query designer toolbar button at the far left end of the toolbar. Figure 18-2 shows the full query designer interface.
    Figure 18-2: Query Builder
    Figure 18-2: Query Builder 
  20. Click the Add Table toolbar button.
  21. Select the Product table and click Add.
  22. Click Close.
  23. Check the Name, ProductNumber, Color, and ListPrice columns.
  24. Click OK.
  25. Click Next.
  26. Select the Tabular layout and click Next.
  27. Move the Color column to the Group area, and the other three columns to the Detail area, as shown in Figure 18-3.
    Figure18-3: Grouping columns in the report
    Figure18-3: Grouping columns in the report
  28. Click Next.
  29. Select the Stepped layout and click Next.
  30. Select the Ocean style and click Next.
  31. Accept the default deployment location and click Next.
  32. Name the report ProductReport1.
  33. Check the Preview Report checkbox.
  34. Click Finish.
Figure 18-4 shows the finished report, open in Report Designer.
Figure 18-4: Report created by the Report Wizard
Figure 18-4: Report created by the Report Wizard
Figure 18-4 shows the main features of Report Designer:
  • The Datasets window shows the data that is available to the report.
  • The main design window lets you view the report itself. You can see a preview of the report, work with the report in a layout designer, or work with the query that returns the data for the report.
  • The Solution Explorer, Output, and Properties windows are the standard Visual Studio windows.
Modifying a Report
Now that you've created a report with the Report Wizard, you can modify it with the Report Designer. If you've used any sort of visual report design tool in the past, you should have no problem making changes here. Among the possibilities here:
  • You can change the available data or the sort order for the report by modifying the query on the Data tab.
  • You can resize or rearrange controls on the Layout tab.
  • You can use the Properties window to change properties of individual controls including their font, alignment, colors, and so on.
Try It!
To modify the report that you just created, follow these steps:
  1. Click the Data tab to view the query for the report.
  2. Select a Descending sort type for the ListPrice column.
  3. Click the Layout tab.
  4. Click in the textbox at the top of the report, where the report name is displayed.
  5. Use the Properties window to change the Value property of this control to Products By Color.
  6. Click on the header for the Product column.
  7. Place the cursor between the Name and Product Number columns to display a double-headed arrow. Hold down the mouse button and drag the cursor to the right to widen the Name column.
  8. Place the cursor between the Product Number and ListPrice columns to display a double-headed arrow. Hold down the mouse button and drag the cursor to the right to widen the Product Number column.
  9. Click on the Preview tab to view the modified report, as shown in Figure 18-5.
    Figure 18-5: Modified product report
    Figure 18-5: Modified product report
Designing a Report From Scratch
You can also use Report Designer to build your own reports starting from scratch. In general, you'll follow these steps to create a report:
  1. Create a Report project in Business Intelligence Design Studio.
  2. Associate one or more datasets with the report.
  3. Create a query from the dataset.
  4. Build the report layout.
Try It!
To create a fresh report in Report Designer, follow these steps:
  1. Select File > Close Solution to close the existing report.
  2. Select File > New > Project.
  3. Select the Business Intelligence Projects project type.
  4. Select the Report Server Project template.
  5. Name the new report ProductReport2 and pick a convenient location to save it in.
  6. Right-click on the Reports node in Solution Explorer and select Add „ New Item.
  7. Select the Report template.
  8. Name the new report ProductReport2.rdl and click Add.
  9. Select the Data tab in the Report Designer.
  10. Click the Datasets dropdown and select <New Dataset> to open the Data Source dialog box.
  11. Name the new Data Source AdventureWorksDS.
  12. Click the Edit button.
  13. Connect to your test server and choose the AdventureWorks database.
  14. Click OK.
  15. Click OK again to create the data source.
  16. Click the Query Designer toolbar button inside the Data tab to display the full query designer user interface.
  17. Click the Add Table button.
  18. Select the Location table.
  19. Click Add.
  20. Click Close.
  21. Check the boxes for the Name and CostRate columns.
  22. Sort the dataset in ascending order by Name.
  23. Click the Layout tab to show the blank report layout.
  24. Hover your mouse over the toolbox tab to display the available controls for the report.
  25. Double-click the List control.
  26. Expand the List control to the width of the report.
  27. Expand the dataset in the Datasets window to show the column names.
  28. Drag the Name and CostRate columns from the Datasets window and drop them in the List control. Expand them horizontally until each takes up about half of the List control. Figure 18-6 shows the report in layout view. Figure 18-6: Designing a report from scratch
    Figure 18-6: Designing a report from scratch
  29. Select the Preview tab to see the report with data.

SSRS Tutorial: Publishing a Report

Creating reports in Business Intelligence Development Studio is good for developers, but it doesn't help users at all. In order for the reports you build to be available to others, you must publish them to your Reporting Services server. To publish a report, you can use the Build and Deploy menu items in Business Intelligence Development Studio. Before you do this, you need to check the project's configuration to make sure that you've selected an appropriate server for the deployment.
Try It!
To publish a report, follow these steps:
  1. Close the ProductReport2 project.
  2. Open the ProductReport1 project.
  3. Select Project > ProductReport1 Properties.
  4. Click the Configuration Manager button.
  5. Set the Active Solution Configuration to Production.
  6. Make sure the Configuration is set to Production and both the Build and Deploy checkboxes are checked. Figure 18-7 shows the Configuration Manager.
    Figure 18-7: Setting the active configuration
    Figure 18-7: Setting the active configuration
  7. Click Close.
  8. Fill in the URL for your Report Server. If you're developing on the same computer where Reporting Services is installed, and you installed in the default configuration, this will be http://localhost/ReportServer. Figure 18-8 shows the completed Property Pages.
    Figure 18-8: Setting report project properties
    Figure 18-8: Setting report project properties
  9. Click OK.
  10. Select Build > Deploy ProductReport1. The Output Window will track the progress of BIDS in deploying your report, as shown in Figure 18-9. Depending on the speed of your computer, building the report may take some time.
    Figure 18-9: Deploying a report
    Figure 18-9: Deploying a report
  11. Launch SQL Server Management Studio.
  12. Click the Connect button in Object Explorer and select Reporting Services.
  13. Connect to your test server.
  14. Expand the Home node in the Object Explorer tree to find the ProductReport1 project.
  15. Expand the ProductReport1 project to find the ProductReport1 report.
  16. Right-click on the report and select View Report.
  17. If prompted, supply your username and password. The report will open in your Web browser.

SSRS Tutorial: Using Report Builder

Report Designer gives you one way to create reports for Reporting Services, but it's not the only way. SQL Server 2005 also includes a tool directed at end users named Report Builder. Unlike Report Designer, which is aimed at Developers, Report Builder presents a simplified view of the report-building process and is intended for business analysts and other end users.
Building a Data Model
Report Builder doesn't let end users explore all of a SQL Server database. Instead, it depends on a data model: a preselected group of tables and relationships that a developer has identified as suitable for end-user reporting. To build a data model, you use Business Intelligence Development Studio. Data models contain three things:
  • Data Sources connect the data model to actual data.
  • Data Source Views draw data from data sources.
  • Report Models contain entities that end users can use on reports.
Try It!
To create a data model, follow these steps:
  1. If it's not already open, launch Business Intelligence Development Studio
  2. Select File > New > Project.
  3. Select the Business Intelligence Projects project type.
  4. Select the Report Model Project template.
  5. Name the new project AWSales and save it in a convenient location.
  6. Click OK.
  7. Right-click on Data Sources in Solution Explorer and select Add New Data Source.
  8. Read the first page of the Add New Data Source Wizard and click Next.
  9. Click New.
  10. In the Connection Manager dialog box connect to the AdventureWorks database on your test server and click OK.
  11. Click Next.
  12. Name the new data source AdventureWorks and click Finish.
  13. Right-click on Data Source Views in Solution Explorer and select Add New Data Source View.
  14. Read the first page of the Add New Data Source View Wizard and click Next.
  15. Select the AdventureWorks data source and click Next.
  16. Select the Production.Product table and click the > button to move it to the Included Objects listbox.
  17. Select the Sales.SalesOrderDetail table and click the > button to move it to the Included Objects listbox.
  18. Click the Add Related Tables button.
  19. Click Next.
  20. Click Finish.
  21. Right-click on Report Models in Solution Explorer and select Add New Report Model.
  22. Read the first page of the Report Model Wizard and click Next.
  23. Select the Adventure Works data source view and click Next.
  24. Keep the default rules selection, as shown in Figure 18-10, and click Next.
    Figure 18-10: Creating entities for end-user reporting
    Figure 18-10: Creating entities for end-user reporting
  25. Choose the Update Statistics option and click Next.
  26. Click Run to complete the wizard.
  27. Click Finish. If you get a warning that a file was modified outside the source editor, click Yes.
  28. Select Build „ Deploy AWSales to deploy the report model to the local Reporting Services server.
Building a Report
Report Builder itself is a ClickOnce Windows Forms application. That means that end users install it from the browser, but once installed it's not a browser-based application. To get started with Report Builder, browse to your Reporting Services home page. Typically, this will have a URL such as http://ServerName/Reports (or http://localhost/Reports if you're running the browser on the same box with SQL Server 2005 itself). Figure 18-11 shows the Reporting Services home page.
Figure 18-11: Reporting Services home page
Figure 18-11: Reporting Services home page
To install Report Builder, click the Report Builder link in the home page menu bar. Report Builder will automatically load up all of the available report models and wait for you to choose one to build a report from.
Try It!
  1. Open a browser window and navigate to http://localhost/Reports (or to the appropriate Report Server URL if you're not working on the report server).
  2. Click the Report Builder link.
  3. Depending on your operating system, you may have to confirm that you want to run the application.
  4. After Report Builder is installed, select the AdventureWorks report model and the table report layout. Click OK. Figure 18-12 shows the new blank report that Report Builder will create. Figure 18-12: New report in Report Builder
    Figure 18-12: New report in Report Builder
    The Explorer window to the left of the design surface shows all of the tables in the report model. Beneath that, the Fields window shows the entities in the currently-selected table. Note that not everything in this window is a column in the table: the report model also contains aggregate entities such as Total Safety Stock Level and automatically calculated fields.

  5. Select the Product table.
  6. Drag the Name field and drop it in the area labeled Drag and Drop Column Fields.
  7. Click on Special Offer Products in the Explorer window to show related child tables.
  8. Click on Sales Order Details.
  9. Drag the Total Order Qty field and drop it to the right of the Name field.
  10. Click where it says Click to Add Title and type Product Sales.
  11. Click the Run Report button to produce the report shown in Figure 12-13.
    Figure 18-13: Report in Report Builder
    Figure 18-13: Report in Report Builder 
  12. Click the Sort and Group toolbar button.
  13. Select to sort by Total Order Qty descending.
  14. Click OK.
  15. Select File > Save.
  16. Name the new report Product Sales.
  17. Click Save. This will publish the report back to the Reporting Services server that you originally downloaded Report Builder from.

SSRS Tutorial: Using Report Manager

The Web home page for Reporting Services provides a complete interface for managing reports (as well as other objects such as data sources and models) after they are created. This interface, known as Report Manager, is intended primarily for database administrators, but as a developer you should know about its capabilities for managing and modifying reports.
When you click on a report in Report Manager, you'll see the report's data, as shown in Figure 18-14.
Figure 18-14: Report in Report Manager
Figure 18-14: Report in Report Manager
Note that reports in Report Manager open in a tabbed interface. The four tabs allow you to perform various functions:
  • View allows you to see the current data in the report.
  • Properties lets you adjust such things as the report's name, data source, security credentials, caching, and end-user security.
  • History shows you saved snapshots of the report.
  • Subscriptions lets you create subscriptions to the report. Subscriptions allow you to set up periodic delivery of reports to end users by e-mail or file share.

SSRS Tutorial: Exercises

Use Report Builder to create a report from the AdventureWorks data model showing the minimum and maximum order quantity for orders taken by each salesperson in the company. You'll find the necessary data in the SalesOrderHeader and SalesOrderDetail tables.
Solutions to Exercises
  1. Open a browser window and navigate to http://localhost/Reports (or to the appropriate Report Server URL if you're not working on the report server).
  2. Click the Report Builder link.
  3. Select the AdventureWorks report model and the table report layout.
  4. Click OK.
  5. Select the Sales Order Header table.
  6. Drag the Sales Person ID field and drop it in the area labeled Drag and Drop Column Fields.
  7. Click on Sales Order Details in the Explorer window.
  8. Expand the Total Order Qty field in the Fields window to show the alternative fields beneath it.
  9. Drag the Min Order Qty field and drop it to the right of the Name field.
  10. Drag the Max Order Qty field and drop it to the right of the Min Order Qty field.
  11. Click where it says Click to Add Title and type Sales Performance.
  12. Click the Run Report button to produce the report shown in Figure 18-15.
Figure 18-15: Sales performance report
Figure 18-15: Sales performance report