Wednesday, January 30, 2013

How do I install a sample database using script?

When you are working with SQL Servers you may want to use database samples. Microsoft has published sample databases from time to time. Some of the databases published are,

Pubs
Northwind
Foodmart for OLAP
Adventure Works of various types.


These database samples comes in two forms; MDF & LDF files or script files which when run on the server installs the databases. The MDF and LDF files can be used to install the samples using either the Graphic User Interface (Right Click Databases node in the SQL Server Management Studio and choose Attach...) Attach menu item on SQL Server, or using T-SQL Scripts.

For SQL Server 2000 database files please follow this link: http://www.microsoft.com/enus/download/details.aspx?id=23654

For Adventure Works database files please follow this link: http://msftdbprodsamples.codeplex.com/releases

Make sure you get both the MDF and LDF files as both are needed while attaching the databases, read the following comments here, http://msftdbprodsamples.codeplex.com/workitem/19203.

For attaching the MDF / LDF files follow this link for step-by-step procedure here:

Here the use of script file to install the sample on SQL Server 2012 is demonstrated. Note that the original documentation mentions that Northwind (2000) can only be installed on Windows 2003 and Windows XP, but you can install them on a Windows 7 machine.

From the link mentioned earlier for Northwind you can download the SQL2000SampleDb.msi file to a location of you choice.
Double click the MSI fileshown here,




Double click SQL2000SampleDb.msi in the download folder location to open






Click Next and agree to license terms on the next widow that is displayed. Click Next.



Click Next.



Click Next.




The database scripts as well as mdb / ldb files will be created in C:\SQLServer2000SampleDatabases as shown.


Connect to SQL Server 2012 and create an empty database Northwind
Click File | Open |  File...
The instnwnd.sql file opens in a query window. Check Syntax.


Click Execute.
You may get the message like:

Msg 2812, Level 16, State 62, Line 2
Could not find stored procedure 'sp_dboption'.
Msg 2812, Level 16, State 62, Line 3
Could not find stored procedure 'sp_dboption'.

Comment out the sp_dboption as shown as it is deprecated in SQL Server 2012.

--exec sp_dboption 'Northwind','trunc. log on chkpt.','true'
--exec sp_dboption 'Northwind','select into/bulkcopy','true'

Click Execute

The Northwind database will fully populated as shown:



Enjoy!

Mahalo














Tuesday, January 8, 2013

Securing data while using SQL Azure


One of the major concerns in using SQL Azure is the security of data such as credit card numbers, Social Security numbers, salaries, bonuses etc. The degree to which data needs to be protected is to be determined by each business entity but generally, on-site data is more secure than data stored in the cloud.
This is a simple example of using SQL Server Integration Services SIS and SQL Server Reporting Services tools to accomplish just that.
We start off with this scenario: The fictitious company SecureAce wants to place one of their Employee tables on SQL Azure, but they do not want to keep any sensitive information such as employee salaries. However from time to time they need to generate report of their employees and salaries to management.
The solution to this scenario is divided in two parts.
In the first part, the on-site data in the employees table is partitioned in such a way that the sensitive information stays on-site and the larger, non-sensitive data is stored on SQL Azure.
In the second part SSIS is used to bring the two pieces of data together and load an Access database (on-site) which is used as a front end for reporting information to management, an entirely realistic way of data management. Although a Microsoft Access database is used, any other destination handled by SSIS can also be used[s1] , such as another SQL Server database. Herein we used MS Access as it is a very common product used in many small businesses.
 It may be noted however that Microsoft is now supporting connecting SQL Azure to MS Access directly, review this link for details: http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/05dd7620-f209-43d2-8c41-63b251c62970. With the availability of Microsoft Office Professional Plus 2010, the author was able to directly connect to SQL Azure using an ODBC connection.
Splitting the data and uploading to SQL Azure
This is a preparation for the SSIS task that follows. We will be using Northwind database’s Employee table and splitting it in two parts each containing different columns, a vertical partition. One part will remain on site which contains the salary information of employees and the other which is loaded to SQL Azure will contain most of other information.  In the Northwind database, the employee table does not have a salary column and hence an extra column will be added for this simulation. The procedure is described in the following[s2]  steps[Maitreya3] .
·         Create a table Employees in VerticalPart using the following statement:
CREATE TABLE [dbo].[Employees](
[EmployeeID] [int] PRIMARY KEY CLUSTERED NOT NULL,
[LastName] [nvarchar](20) NOT NULL,
[FirstName] [nvarchar](10) NOT NULL,
[HomePhone] [nvarchar](24) NULL,
[Extension] [nvarchar](4) NULL,
[Salary] [money] NULL
)
·         Use Import / Export Wizard to populate the columns (except Salary) of the above table using Northwind's Employees table
·         Modify table by adding salary for each employee
[s6] [j7] There are only few employees and this should not be a problem. When you want to save the table, you may not be able to do so unless you have turned-on this option, in the Tools menu of SSMS. You will get a reply after you save [s8] [j9] the Employees table as shown.

Now run a SELECT query to verify that the salary column has been populated as shown.


Copy the script for Northwind’s Employee table and modify it by changing the table name and removing some columns resulting in the following statement:

CREATE TABLE [dbo].[AzureEmployees](
[EmployeeID] [int] PRIMARY KEY CLUSTERED  NOT NULL,
[LastName] [nvarchar](20) NOT NULL,
[FirstName] [nvarchar](10) NOT NULL,
[Title] [nvarchar](30) NULL,
[TitleOfCourtesy] [nvarchar](25) NULL,
[HireDate] [datetime] NULL,
[Address] [nvarchar](60) NULL,
[City] [nvarchar](15) NULL,
[Region] [nvarchar](15) NULL,
[PostalCode] [nvarchar](10) NULL,
[Country] [nvarchar](15)
)
Note that the table name has been changed to AzureEmployees. This is the table that will be stored in the Bluesky database on SQL Azure.
Login to SQL Azure and create the table in Bluesky database by running the above create table statement.
The table will be created with the above schema which you may verify in the Object Browser.

Use Import and Export Wizard to populate the columns of AzureEmployees with data from Northwind. Use the query option to move data from source to destination using the following query.
SELECT EmployeeID, LastName, FirstName,
Title, TitleOfCourtesy, HireDate,
Address, City,Region, PostalCode,
Country
FROM
Employees
Save the query results to the AzureEmployees table you created earlier as shown. 


Follow wizard’s steps to review data mapping as shown


Complete the wizard steps as shown.


Verify data in AzureEmployees in Bluesky database on SQL Azure by running a SELECT statement.
By following the above we have created two tables, one on-site and the other on SQL Azure.
Although data transformation of string data types did not present any error due to string length it could present some problems if the string length is over 8000 if the strings are of type varchar (max) and text. In these cases just change them to nvarchar (max) to overcome the problem. For details review the following link:  http://blogs.msdn.com/b/sqlazure/archive/2010/06/01/10018602.aspx
Merging data and loading an Access database
In this section we will reconstruct the Employees table on-site by retrieving data from SQL Azure as well as SQL Server’s VerticalPart database and merge them. After merging them, we will place them in an MS Access database so that simple reports can be authored.
In order to do this we take the following steps.
  1. Click open BIDS from its shortcut.
  2. Create a Integration Services Project after providing a name for the project. Change the default name of the Package file.
The Project folder should appear as shown in the next image. Project name and Package name were provided.

  1. Drag and drop a Data Flow task to the Control Flow tabbed page of the package designer surface.
  2.  In the bottom pane Connection Managers, configure connection managers one each for SQL Azure database; VerticalPart database on SQL Server 2008; and an MS Access database as shown.



The next image shows the details of the connection manager Hodentek3\KUMO.VerticalPart. Note that SqlClient Data Provider is used. The SQL Server Hodentek3\KUMO is configured for Windows Authentication.



This next image shows the connection xxxxxxxxxx.database.windows.net.Bluesky.mysorian1 for the Bluesky database on SQL Azure. The authentication information is the same one you have used so far and, if it is correct you should be able to see the available databases.


  1. Create an MS Access database (Access 2003 format) and use it for this connection.
Later we also create a table in this database to receive the merged fields from SQL Azure and the on-site server.
For this connection manager we use the following settings and verify by clicking the Test Connection button:
Provider:                 Native OLE DB\Microsoft Jet 4.0 OLE DB Provider
Database file is at:  C:\Users\Jay\AccessSQLAzure.mdb
User name:              Admin
Password:               <empty>

It is assumed that the reader has familiarity with using SSIS. The author recommends his own book on SSIS for beginners, which may be found here: https://www.packtpub.com/sql-server-integration-services-visual-studio-2005/book.
Each of the above connections can be tested using the Test Connection button on them.
Merging columns from SQL Azure and SQL Server
You will use two ADO.NET Source data flow sources, one each for SQL Azure and SQL Server. The outputs will be merged.
  1. Add two ADO.NET data flow sources to the tabbed designer pane Data Flow.
  2. Rename the default names of the source components to read From SQL Azure Database and From SQL Server 2008 database.



  1. Configure the ADO.NET Source Editor connected to SQL Azure to display the following as shown in the next image.
ADO.NET Connection manager: XXXXXXX.database.windows.net.Bluesky.mysorian1
Data access mode: Table or view
Name of the table or view: "dbo"."AzureEmployees"
You must use the server name appropriate for your SQL Azure instance.

Configured as shown and you should be able to view the data in this table with the Preview…button.


  1. Configure the ADO.NET Source Editor connected to SQL Server to display the following as shown in the next image.
Use the following details to configure  From SQL Server 2008 database source used in the ADO.NET Source Editor are as follows:
ADO.NET Connection manager: Hodentek3\KUMO.Verticalpart
Data access mode: Table or view
Name of the table or view: "dbo"."Employees"


Again you should be able to view the data in this table with the Preview…button.
Sorting the outputs of the sources
Since the data coming at the exit point of the sources are not sorted it is important to get the sorting correct and same in both sources before they can be merged.
  1. Drag and drop two Sort dataflow controls from the Toolbox to the design surface just below the ADO.NET data sources.
  2. Start with the one that is going to be receiving its input from the From SQL Azure Databasesource control.
  3. Click From SQL Azure Database and drag and drop the green dangling line on to the Sort control below it as shown.



  1. Double click the Sort control to display the Sort Transformation Editor and place a check mark for EmployeeID as shown.

  1. Repeat the same procedure for the From SQL Server 2008 Database source. Now we have two sort controls receiving their inputs from two source controls with outputs sorted.
  2. Drag and drop a Merge Join Data Flow Transformation from the Toolbox on to the design surface.
  3. Click the Sort data flow transformation on the left (connected to From SQL Azure Database) and drag and drop its green dangling line on to the Merge Join data flow transformation.
The Input Output Selection window will be displayed as shown.



  1. Select the Merge Join Left Input and click OK.
  2. Repeat the same for the other Sort on the right (this time select Merge Join Right Output).
This Merge control now merges the output from the two sort controls and provides a merged output.
You still need to configure the Merge Join.
  1. Double click Merge Join to open the Merge Join Transformation editor page as shown.
Read the instructions on this window.



  1. Place check mark for EmployeeID in both the Sort lists shown in the top pane. The bottom pane gets populated with Input columns and Output aliases. Make sure the join type is Left outer join as in the above image (use drop-down handle if needed).
We can add for each flow path a Data Viewer so that we can monitor the flow of data at run time by momentarily stopping the flow downstream. We are skipping this diagnostic step.
Porting output data from Merge Join to an MS Access Database
We will be using the merged data from the two sources to fill up a table in an MS Access 2003 database. 
  1. In the MS Access database you created while setting up the Connection Managers create a table, Salary Report table with the design parameters shown in the next image.


  1. Drag and drop an OLE DB Destination component from the Toolbox on to the package designer pane just underneath the Merge Join component.
  2. Drag and drop the green dangling line from Merge Join to the OLE DB Destination component.
  3. Double click the OLE DB Destination component to open its editor and fill in the details as follows:
OLEDB connection manager:   AccessSQLAzure
Data access mode:                     Table or View
Name of the table or view:        Salary Report


  1. Click Mappings to verify all the columns are present.
  2. Build the project and execute the package.
The package elements turn yellow and later green indicating a successful run.
You can verify the table in the access database for the transferred values. This should have all the merged columns from the two databases. Note that in the image, columns have been rearranged to move the Salary column into view.


This is an excerpt of Chapter 6 from my book:
Book published by http://www.packtpub.com/

Also take a look at my two other books published also by Packt:







Friday, January 4, 2013

Regarding the SQL Server 2012 Developer Training Kit

If the answer is yes, I recommed that you download immediately the SQL Server 2012 Developer Training Kit. This can be installed from here:
http://www.microsoft.com/en-us/download/details.aspx?id=27721



Before you install the KIT you need to install the Web Platform Installer 4.0. You can get it from the same link. Read the previous post here for installing Web PI 4.0: http://hodentek.blogspot.com/2012/12/you-can-get-lots-of-stuff-from-web.html

Note that the KIT's executable may not necessariloy show up in WEB PI4.0!!

When you run the Kit related exe (http://download.microsoft.com/download/D/0/9/D098DCF2-1888-4624-920B-B2DE71B2728F/SQL2012DevTrainingKit.WebInstaller.exe) file you will download the kit.



On this computer it was installed in the default folder "C:\Program Files\Microsoft\Web Platform Installer\WebPlatformInstaller.exe". Note that you have to allow Activex on your IE and you may get this warning, better pay attention to it and enable it.



When you run this program you will find the default.htm, the starting point of your journey.
C:\SQL2012UpdateForDevsTrainingKit\Default.htm

Default.htm opens out like this. You can learn a lot, not just DBA, but also development and of course BI.



Good luck.

Aloha from Honolulu

Saturday, December 15, 2012

December Update to SSDT

In December 2012 SSDT got updated. Here are some details:

If you are planning to use Visual Studio 2012 you are better off installing the December 2012 update. The December 2012 update to SSDT relates to what you have on your computer in terms of Visual Studio version.

1. If you already have Professional, Ultimate or Premium Edition of Visual Studio 2012 and agreed to install SSDT during installation then the machine will have an earlier version of SSDT. This update will replace the version with the latest.

2. If you do not have Visual Studio Professional or above SSDT will install the Visual Studio 2012 Integrated Shell. This Shell perform very much like the BIDS in the past and you will not be able to do programming as it neither include any Visual Studio programming languages such as VB or C# nor does it support the various types of projects that you can create with the non-shell, full versions of Visual Studio Professional and above. This December update updates the functionality of Express SKUs of Visual Studio 2012. The following are the improvements over the previous version:

Database Unit Testing

Integration of SSDT Power Tools

Updated Data-Tier Application Framework

Bug fixes


If Visual Studio Professional or above is present, SSDT will be integrated with the existing VS program. However SP1 must be manually installed before installing the update.

If VS Professional or above SSDT is not present SSDT installs only the Visual Studio 2010 Integrated Shell. SP1 must first be installed before installing the SSDT (However when the blogger used the web installer the SP1 was already in place). The shell as the name suggests contains only SSDT related items and does not include programming languages such as VB and C#.
Program installed in July 2012 using web installer

The following are the improvements over the previous version:

Database Unit Testing

Integration of SSDT Power Tools

Updated Data-Tier Application Framework

Bug fixes


The platforms that support the updated SSDT are:

Windows Vista SP2 or above

Windows 7 SP1 or above

Windows 8 RTM

Windows Server 2008 SP2 or above

Windows Server 2008 R2 SP1 or above

You can download SQL Server data tools for Visual Studio 2012 from this link:


Additionally you can get an ISO image or download SSDTSetup.exe to create an administrative install point if there is no internet access. For details visit the previous link.

Thursday, September 27, 2012

Breaking News: Packt finished publishing its 1000th Book

Aloha,

Packt is celebrating and I have been a part of this success story. Particpate in the celebration and get a free eBook to mark this occasion.

Just go to Packt's web site and register yourself if you are not already registered. The rest is simple.
If you are looking for jump starting your SQL Server / Applications you search for eBook versions of my books shown here:



Good luck
Mahalo

Wednesday, September 26, 2012

New service update for Azure SQL database

In a recent update to the Azure SQL database service the following features were added:
  • Support for linked servers-
  • Distributed Queries against the database-local & Azure databases
  • Support recursive triggers
  • Support for DBCC Show_Statistics
Firewall configuration at database level (previously at Server level)-You get better control
Firewalls can be set up at the portal or through T-SQL-makes life easier.
If you want to look at earlier service updates you can find them in my book:


Links to linked server, distributed queries etc. here,

MySQL Linked Server | Jayaram Krishnaswamy

jayaramkrishnaswamy.sys-con.com/node/1060191
Aug 4, 2009 – Jayaram Krishnaswamy is a technical writer, mostly writing articles that are related to the web and databases. He is the author of SQL Server ...

MS Access Linked Server, comparing providers | Jayaram ...

jayaramkrishnaswamy.sys-con.com/node/1004765Cached
Jun 16, 2009 – In this article on SSWUG.org web site, the MSDASQL OLE DB ODBC driver is compared with Microsoft Jet 4.0 as related to creating a linked ...


Microsoft Jet or MSDASQL for Linked Servers? | Jayaram ...

https://jayaramkrishnaswamy.ulitzer.com/node/1064612Cached
Aug 7, 2009 – Jayaram Krishnaswamy is a technical writer, mostly writing articles that are related to the web and databases. He is the author of SQL Server ...

Latest Articles in the Category SQL

dotnetslackers.com/articles/sql/?page=1&sort=2Cached
Jayaram Krishnaswamy, May 21, 2009. Views: 18,484 Avg Rating: 0/5 Votes: 0 Comments: 0. This article explains how to set up a Postgres linked server on SQL ...


Creating a linked Postgres Server on SQL Server 2008

dotnetslackers.com › Recent Articles › SQLCached - Similar
... on SQL Server 2008. Published: 21 May 2009. By: Jayaram Krishnaswamy. This article explains how to set up a Postgres linked server on SQL Server 2008.


MySQL Linked Server on SQL Server 2008 | Packt Publishing

www.packtpub.com › Articles › .NETCached - Similar
by Jayaram Krishnaswamy | August 2009 | .NET Microsoft. Linking servers provides an elegant solution when you are faced with running queries against ...



Monday, August 6, 2012

August 2, 2012: SQL Saturday at Honolulu


Guys here in Honolulu are serious and proactive when it comes to SQL Server. They had the
SQL Saturday event two days ahead of Saturday on 8/2/2012. The event was held at the Honolulu Community College.

This PASS event was organized locally by the Pacific Center for Advanced Technology Training.
These were the talks delivered at the event:

SQL Server 2012 EIM (SSIS, DQS, and MDS) at intermediate level was delivered by Matt Hollingsworth of Microsoft. He gave a reasonably good demo of data cleansing using all of the three tools. He barely touched on Project Barcelona (new data lineage and impact analysis) still under wraps.

Rushabh Mehta of SolidQ gave talks on:
A beginner level Introduction to Data Quality Services (DqS)
An intermediate lelvel introduction to Master Data Management
and
SSIS 2012 Management Considerations and Best Practices

I only attended the 3rd talk which was very good. Lots of enhancements to SSIS since I published my book on SSIS.


Matt gave two other talks:
Building a BI Semantic Model for Power View
SQL Server 2012 Always On Enhancements

I have not dabelled with SharePoint but Wen He of eWorld gave two talks on
Reporting Nirvana -SQL 2012 and SharePoint 2010
Self_service BI with SharePoint

Power View rhymes with Power Point!

I attended the first one which was reasonably good.

There was also a lunch break vendor talk from Nimble Storage. The talk was around Nimble Storage Solutions, I only caught the last bit.


When Identity Security Becomes a Wall — Not a Shield

After a breach that forced a reset of my digital identity, I hit a roadblock I never anticipated: multi-factor authentication (2FA) locked m...