Tuesday, May 10, 2011

Microsoft Office Access and Cloud Computing

Srinivasan Sundara Rajan described “Business productivity thick client cloud applications” in a 5/10/2010 Microsoft Office Access and Cloud Computing post to azure.ulitizer.com:

Microsoft Office Access is one of the  most  popular thick client / client server application development tool  that is prevalent in the enterprises today.  Its simplicity to use, fitment for quick departmental applications and ability to be home grown by the business users without dependency  on IT and  still a  poor man's adhoc  reporting tool,  all makes MS Access a  permanent place in most enterprises.

The latest incarnation of this application development and reporting tool has the following  benefits:

  • Build a relational database for small applications much faster using wizards
  • User interface forms and reports using a common look and feel of Microsoft Office
  • Automation features to avoid manual coding
  • Ability to act as Information Integration Engine which can connect disparate data sources

Mostly Microsoft Access is used as  a desktop thick client application and with increased usage of the Cloud Platform it would be helpful to analyze the options for Microsoft Office in Cloud.

Microsoft Access In Office 365
From older version of Microsoft Access we can  move the data to Microsoft Access 2010, and then publishing the database to Access Services on Office 365, you can make your data accessible to all of your colleagues wherever they are. Perhaps more importantly, your database will be better able to grow as your needs change.

We can use Access 2010 and Access Services, a new component of SharePoint, to build web database applications. Access 2010 and Access Services provide a platform for you to create databases that you can use on the Web. You design and publish a web database by using Access 2010 and SharePoint, and people who have SharePoint accounts use the web database in a web browser.

When you publish a web database, Access Services creates a SharePoint site that contains the database. All of the database objects and data move to SharePoint lists in that site.

SSMA to SQL Azure
Microsoft SQL Server Migration Assistant (SSMA) is a toolkit that dramatically cuts the effort, cost, and risk of migrating from Access to SQL Server 2005, SQL Server 2008, SQL Server 2008 R2 and SQL Azure. SSMA 2008 for Access also supports migrating to SQL Azure.

SSMA provides a Wizard-like interface that allows us to:

  • Create a Migration Project in SSMA with SQL Azure as the destination
  • Allows us to choose the target schema for migration
  • Migrate the tables and data with the convert , Load and Migrate command
  • Provides ability to verify the migration

This tool provides an out-of-the-box solution for migration of Microsoft Access databases to Cloud.

Microsoft Access As Thick Client Cloud Consumer
If the  data resides in SQL Azure, then Microsoft Access can continue to be a thick client and connect to a Cloud database using the linked tables option.

With Microsoft Access 2010, You can create an external data connection to a Web Service. For example, you can create a Web Service data connection to your enterprise Business Data Catalog and get business data. After you create a Web Service data connection, you can link to it as you would any other external data source. If the Web Service accepts parameters, you can change the parameters when you create a linked table by using the Web Service data connection.

The following are the general steps  in  making Microsoft Access  consume Cloud Web Services as a thick client.

  • Obtain a Web Service data connection file
  • Install the web service data connection by using the connection file
  • Create a linked table by using the installed web service data connection

Summary
Microsoft Office Access continues to be most productive end user reporting tool and in the past decade numerous enterprise class applications have been written using that tool.

We cannot discount the immense value Microsoft Access applications brought to end user analytics, ad hoc reporting and complex client side calculations. The biggest draw back  for the Microsoft Access applications  have been hitherto its storage whereby the Jet engines which is the underlying database have historically known for space limitation.[*]

While over the period the limitations have been reduced to a great extent, the above mentioned Cloud Migration options makes Microsoft Access continuously play a role in the enterprise end user productivity applications.

With the support for  Microsoft Office mobile  applications, having  Microsoft Access as a thick client which can consume  cloud data may be a  worth while option for future productivity applications.

Srinivasan Sundara Rajan works at Hewlett Packard as a Solution Architect.

* Historically, problems have been encountered with database corruption with more than about 20 users updating records simultaneously, not “space limitations.”

For more details about Access 2010 Web databases and as a RAD front-end for Microsoft’s SQL Azure cloud database, see my Three Microsoft Access 2010 Webcasts Scheduled by Que Publishing for March, April and May 2011 post updated 5/3/2011.

Tuesday, May 3, 2011

Three Microsoft Access 2010 Webcasts Scheduled by Que Publishing for March, April and May 2011

Updated 5/3/2011: Added links to a downloadable Northwind.mdb file for upsizing to SQL Server or SQL Azure with the SQL Server Migration Assistant (SSMA) for Access and a NwindAzure.mdb front-end for a publically accessible SQL Azure cloud database. Changed date and title of the 5/23/2011 Webcast to Moving Access Tables to SharePoint 2010 or SharePoint Online Lists and added a “Web Databases with SharePoint Online” topic.

Updated 3/30/2011: Changed from WebEx to pre-recorded Webcast format. The first Webcast is available on-demand by clicking the headline below and completing the registration form.

Over this and the next two months, I’ll present the following free 45-minute to one-hour Webcasts about advanced Microsoft Access topics for Que Publishing:

image


Upsizing Access 2010 Projects to Web Databases with SharePoint 2010 Server

Presented by Roger Jennings
Tuesday – March 29, 2011 – 12:00 pm ET Prerecorded – Available on Demand

image Microsoft Access 2000, 2002 and 2003 offered intranet connectivity by means of Access Data Pages (DAP), which Access 2007 and 2010 no longer support. Access 2010 introduces the capability to easily publish Access *.accdb applications to Web Databases that run on SharePoint Server 2010’s Access Services.

imageIf your organization doesn’t have a SharePoint Server 2010 license, you can subscribe to low cost, on-demand instances provided by Office 365 or independent Microsoft partners, such as AccessHosting.com. Use SharePoint security to establish read and read/write access to your on-premises or hosted project. In this Webinar, you’ll learn how to:

  • Generate a Web Database-compatible application from an Access template
  • Modify an existing Access app to comply with Web Database requirements
  • imageSubscribe to trial Office 365, AccessHosting.com, or both hosting services
  • Publish your application to on-premises or hosted services with a wizard
  • Establish role-based authentication and authorization security for intranet, Internet, or both types of users

Register here to watch the 45-minute Webcast.

Update 3/30/2011: Problems with image size/quality and the missing player slider have been fixed.


Linking Access tables to on-premise SQL Server 2008 R2 Express or SQL Azure in the cloud


Presented by Roger Jennings
Tuesday – April 26, 2011 – 12:00 pm ET Prerecorded – Available on Demand

image Microsoft SQL Server has been the preferred back-end database for heavy-duty, multiuser Access applications since Access 2000 introduced the capability to link to the Microsoft Data Engine (MSDE). Microsoft Access 2007 and 2010 don’t support user- and group-level security for new multi-user database projects, so it’s more important than ever to use the SQL Server Migration Assistant (SSMA) for Access to move to SQL Server databases, which maximize data accessibility, reliability and security.

image If you don’t want the burden of maintaining and backing up SQL Server databases, the SSMA lets you migrate directly to remote SQL Azure instances running in Microsoft data centers.

In this Webcast, you’ll learn how to:

  • Download and install no-charge SQL Server 2008 R2 Express and SQL Server 2008 R2 Management Studio (SSMS) Express to manage on-premises database back ends
  • Download and install the SQL Server team’s free SSMA, which substitutes for Access’s Upsizing Wizard in linking scenarios
  • Use the SSMA to link existing Access queries, forms, and reports to a SQL Server 2008 R2 Express database.
  • Establish security with user logins and database roles you create in SSMS.
  • Obtain a 30-day free trial subscription to a 1-GB SQL Azure Web database that you can convert to a $9.99 per month paid subscription
  • Use SSMA to create a SQL Azure server with a trial subscription.
  • Use the SSMA to link existing Access queries, forms, and reports to the trial SQL Azure database running in a Microsoft data center.
  • Use SSMS to add security with SQL Azure user logins and database roles.

You can download Northwind.mdb for upsizing to SQL Server and SQL Azure from my Windows Live Skydrive instance here.

You also can download NwindAzure.mdb, which is a Access front-end for tables linked by a publically accessible Northwind SQL Azure database, here. Running NwindAzure.mdb will open a connection to the Northwind database running in Microsoft’s South Centeral US (San Antonio, TX) data center.

Register here.


Moving Access Tables to SharePoint 2010 or SharePoint Online Lists

Presented by Roger Jennings
Monday – May 23, 2011 – Prerecorded – Available 12:00 pm ET

image The Microsoft Access Team recommends using SharePoint lists as the shared data source for secure multi-user queries, forms and reports. If you don’t have access SharePoint Services v3 for Windows Server 2003 [R2] or SharePoint Foundation 2010 for Windows Server 2008 [R2], your network administrator can install one of these no-charge add-ons in a few minutes. In this case, your IT department is responsible for backing up and managing your data.

image Alternatively, you can subscribe to Microsoft’s low-cost Office365 (formerly Business Productivity Online Suite, BPOS), which now includes a hosted SharePoint instance, or to an instance provided by a Microsoft partner. In this case, the provider assures your data is backed up and always available. The SharePoint administrator manages read and update permissions for data. In this webcast, you’ll learn to:

  • Create a SharePoint-compatible application from an Access template
  • Modify an existing Access app to replace relationships with SharePoint lookup tables
  • Subscribe to trial Office 365 SharePoint hosting services
  • Move your application’s tables to hosted SharePoint services with a wizard
  • Synchronize locally-stored (cached) copies with the master SharePoint list data
  • Establish role-based authentication and authorization security for intranet users
  • Upsize Access applications to Web Databases with SharePoint Online.

Register here.


About the Author

Roger Jennings is an author and consultant specializing in Microsoft .NET, SQL Server, and Access database applications, as well as Windows Azure and SQL Azure cloud computing projects. He was a technical beta tester for all 10 editions of Microsoft Access; SQL Server 6.5, 7.0, 2000, 2005, 2008, and 2008 R2; every release of Visual Basic since version 2.0 and Windows 3.1; and all subsequent Microsoft Windows operating systems. He also was one of the founding members of Microsoft’s former Access Insiders group. Roger is a principal of OakLeaf Systems, a Northern California software consulting firm. He’s the author of many Que titles such as Microsoft Access 2010 In Depth and the curator of Roger Jennings’ Access Blog and the OakLeaf Systems blog.

Sunday, April 24, 2011

Chris Mayo’s Recent SharePoint Online Beta Posts

Now that Office 365, which includes Access Services, is available in a public beta, I’ll be including articles on SharePoint Online topics in this blog.

Note: I’ll cover linking Access tables to SharePoint Online lists and upsizing to Access Web Databases using SharePoint Online in my Moving Access Tables to SharePoint 2010 and SharePoint Online Lists Webcast of 5/10/2011. See my Three Microsoft Access 2010 Webcasts Scheduled by Que Publishing for March, April and May 2011 post for more details.


SharePoint Online for Office 365: Developer Guide (4/21/2011)

image The SharePoint Online team has released the SharePoint Online for Office 365: Developer Guide to provide a comprehensive overview of the SPO platform and how developing for SPO differs from SP2010. Give it a read, it’s a great reference.

Chris is a Microsoft technology specialist focusing on Office 365 and SharePoint Online.


Visual Studio 2010 SharePoint Power Tools for SharePoint Online (4/21/2011)

Developing solutions for SharePoint Online requires they be built using Sandboxed Solutions .  Sandboxed solutions are developed against a scoped version of the Microsoft.SharePoint API specific to the capabilities of the sandbox.

While Visual Studio 2010 provides IntelliSense support for the sandbox, compilation support would be even better (so you can catch issues with code copy/pasted from other projects or online samples, etc.).

Enter the Visual Studio 2010 SharePoint Power Tools. These tools provide sandboxed solution compilation support and a Visual Web Part (Sandboxed) project item template so you can create Visual Web Parts that will run in the Sandbox.

Download and install the tools today. They are a huge time saver for SharePoint Online and sandboxed solutions development.


Building a SharePoint Development Machine Using the Easy Setup Script on SharePoint Sideshow (4/19/2011)

Now that the Office 365 Training Course is available for the Office 365 beta, I’m putting together a blog post on setting of a development environment for Office365.  A good place to start is either setting up a SharePoint VM , using the 2010 Information Worker VMs ( native boot is a great way to go for VMs), or using the new SharePoint 2010 Easy Setup Script .  The Easy Setup Script installs all the SharePoint 2010 development components either locally of onto a native boot VHD without a lot of manual labor.  [Click for] details on the SharePoint Sideshow episode and video!


Couple of interesting Office 365 articles (4/29/2011)

Interesting article on the economics of Office 365 on PC World and another on the marketplace in the LA Times.


New Office 365 Developer Training Course on MSDN (4/28/2011)

Since we announced Office 365 around the same time as PDC last year, I’ve been talking to a lot of other developers about the platform opportunities for building solutions for Office 365. In those discussions, the most common question I get is “how is the SharePoint Online/Exchange Online/Lync Online platform different from the SharePoint 2010/Exchange 2010/Lync Server 2010 platform?”. In order to answer those questions and help you build solutions for the cloud with Office 365, I’m really happy to announce the release of the Office 365 Developer Training Course on MSDN. This training course includes 7 modules with over 10 hours of video and 17 hands-on-labs to help you get started building cloud based communication and collaboration solutions for Office 365, including:

  • Developing in the Cloud with Office 365
    • Office 365 provides a communication and collaboration service in the cloud that you can leverage to build custom solutions for SharePoint Online, Exchange Online and Lync Online. In this session, you’ll learn about this new cloud service and the breadth of solutions that can be developed using the same skills, tools and SDKs you use today when building on-premises solutions.
  • Developing for SharePoint Online with Sandbox Solutions
    • Sandboxed Solutions are the development paradigm for SharePoint Online. In this session, you’ll learn about sandboxed solutions including how to develop, debug and deploy solutions. You’ll also learn the breadth of solutions that can be developed in the sandbox and strategies for developing common scenarios that are not enabled in the sandbox.
  • Building Workflow Solutions for SharePoint Online
    • Building Workflow solutions for SharePoint Online allows you to automate collaboration-centric business processes and surface them to your users via SharePoint Online. In this session, you’ll learn the differences between declarative and code-based workflows, design workflow using Visio 2010, implement that workflow in SharePoint Designer 2010 and customize the workflow using Visual Studio 2010 and custom actions.
  • Developing SharePoint Online Solutions with the Client Object Model
    • The SharePoint Client Object Model provides libraries for programmatically accessing SharePoint Online via Silverlight and JavaScript. In this session, we’ll go deep into the Client Object Model and show you how to develop solutions using both Silverlight and JavaScript.
  • Leveraging Excel and Access Services in SharePoint Online
    • Excel and Access Services provide powerful features for building SharePoint Online solutions. In this session, you’ll get an inside look at both Excel and Access services and how each can be accessed programmatically when building SharePoint Online solutions. [Emphasis added.]
  • Developing Communication Solutions for Lync Online
    • In this session, you learn how to integrate Lync features into your WPF and Silverlight clients much in the same way that Office and SharePoint do, including presence, contact lists and click-to-communicate features. You will also learn how to extend Lync communications to include data and features from your client applications much in the same way that Outlook 2010 does with the
      "IM" and "Call" features within an email.
  • Developing Messaging Solutions for Exchange Online
    • In this session, you'll learn how to integrate Exchange Online mailbox data such as mail, calendar and task items as well as Exchange Online services such as the free-busy service into your applications using an easy to discover and easy to use managed API.

To use this training course as self-paced training, you’ll need to do the following:

  1. Download and configure the 2010 Information Worker Demonstration and Evaluation Virtual Machine (RTM) to provide you a local development environment for SharePoint if you don’t already have one configured.
  2. Download and install the Office 365 Developer Training Kit onto the 2010a VM.
  3. Sign up for the Office 365 Beta to receive access to the service.
  4. Visit the Office 365 Training Course on MSDN to watch the videos and get started with the labs and demos.

As always, I really appreciate your questions/feedback.  Please ping me via the Email Blog Author link!


More Beta details on Microsoft Office 365 Blog (4/18/2011)

More details on the beta can be found on the Microsoft Office 365 Blog.  This is a great blog to mark if you’re working with Office 365.


Office 365 Beta on PC World and PC Magazine (4/18/2011)

Nice write ups on both PC World and PC Magazine.


Bibliography and Links for My “Linking Access tables to on-premise SQL Server 2008 R2 Express or SQL Azure in the cloud” Webcast of 4/26/2011

Updated 4/24/2011 with SQL Server Migration Assistant (SSMA) for Access v4.2 migration log posts of 4/20/2011 and the following:

Download NwindAzure.mdb from my Windows Live Skydrive site to connect to a publicly accessible SQL Azure Northwind database running in Microsoft’s San Antonio, Texas data center from here.

Download Northwind.mdb for upsizing to SQL Server and SQL Azure from my Windows Live Skydrive instance from here.


The following Web-accessible articles address issues with and the history of topics covered in my Linking Access tables to on-premise SQL Server 2008 R2 Express or SQL Azure in the cloud Webcast for Que Publishing on 4/26/2011. The articles are listed in reverse chronological order and include an excerpt from their introduction or summary.

See Three Microsoft Access 2010 Webcasts Scheduled by Que Publishing for March, April and May 2011 of 3/30/2011 for more information on my two upcoming Microsoft Access 2010 Webcasts.


Output Logs for Successful Migration of Northwind.mdb to a SQL Server Northwind Database with SSMA for Access (to SQL Server or SQL Azure) blog post by Roger Jennings (4/20/1011):

imageSuccessfully migrating the tables of an Access 2003 Northwind.mdb sample database with the SQL Server Migration Assistant (SSMA) for Access v4.2 generates 325 log entries for 9 tables. You can download Northwind.mdb from my Windows Live Skydrive instance here.

A complete copy of the log file follows.

You also can download NwindAzure.mdb, which is a Access front-end for tables linked by a publically accessible Northwind SQL Azure database, here. Running NwindAzure.mdb will open a connection to the Northwind database running in Microsoft’s South Centeral US (San Antonio, TX) data center.


Output Logs for Canceled Migration of Northwind.accdb to a SQL Server Northwind Database with SSMA for Access blog post by Roger Jennings (4/20/2011):

imageAttempting to migrate the tables of an Access 2010 Northwind.accdb database created from the built-in Northwind template with the SQL Server Migration Assistant for Access v4.2 generates 670 log entries for 20 tables. The entries consist of 6 error, 245 warning, 233 information and 116 other messages.

Migration failed because of five instances of Access tables with unsupported Attachment field data types and one instance of an unsupported Lookup field data type. Many warnings are the result of the Access team’s inexplicable inclusion of spaces in field names.

A complete copy of the log file follows.


Access to SQL Server Migration: Access Solutions using SQL Server, Part 1 blog post by Mary Chipman (3/19/2011):

imageIn Part 1 and Part 2 I’ll discuss your options for continuing to use Access as a front-end client once you have migrated the data to SQL Server. Some people come to SQL Server migration as Access developers who are new to SQL Server, whereas others may be IT professionals who know little about Access, so I will attempt to bridge any gaps with useful information for everyone. The SSMA Migration Assistant for Access (SSMA) makes it easy to link converted SQL Server tables and queries to the Access database you started from. For applications of any complexity, migrating the data is by far the easiest step. If your existing Access application suffered from intractable problems when the tables were in native Jet/ACE format, and you have done nothing to fix or at least understand those problems, then you are most likely going to have even bigger problems with SQL Server.

The Access client application has often been dismissed as a "toy" because of its ease of use, but when understood and used appropriately with SQL Server on the back end, those very features can help you quickly deliver cost-effective results with a low TCO. Access is not a suitable client for Web or n-tier applications that require a separate data access layer, although it can be used in conjunction with other clients, such as ASP.NET. There are always tradeoffs involved between ease of development, efficiency and security when using Access in a 2-tier, client-server scenario. You will need to determine which of the following techniques are best suited to your needs


Access to SQL Server Migration: Access Solutions using SQL Server, Part 2 blog post by Mary Chipman (3/19/2011):

imageIn Part 2 I'll continue the discussion about how you can "tread lightly" on your SQL Server by making your Access front end an efficient and economical data consumer. I'll focus on techniques you can use to keep your application running efficiently, freeing up network and server resources in the process.


Upsize Microsoft Access Databases to SQL Azure with SSMA 4.2 blog post by Bill Ramos reposted to this blog (4/14/2011):

Bill Ramos explained Migrating Access Jet Databases to SQL Azure in a 4/14/2011 post:

image In this blog, I’ll describe how to use SSMA for Access to convert your Jet database for your Microsoft Access solution to SQL Azure. This blog builds on Access to SQL Server Migration: How to Use SSMA using the Access Northwind 2007 template. The blog also assumes that you have a SQL Azure account setup and that you have configured firewall access for your system as described in the blog post Migrating from MySQL to SQL Azure Using SSMA.


Access to SQL Server Migration: Understanding Data Type Conversions blog post by Mary Chipman (3/6/2011):

imageIn this blog post I’ll discuss how you can use the SSMA Migration Assistant for Access (SSMA) to refine data type mappings between Access and SQL Server, but first a little history lesson. You can think of Access as two separate products rolled into one: the relational database engine, Jet, consisting of tables and queries, and Access application objects, consisting of forms, reports, macros and modules. Access 2007 introduced the Access Connectivity Engine (ACE), replacing Jet. It is fully backwards compatible with earlier versions of Jet, but incorporates new data types and functionality for integrating with SharePoint. Access 2010 completes the SharePoint "vision", making Access a first-class client application for SharePoint. What this means is that little work was done on Access-SQL Server integration, so much of the information available online for data type mappings between Access 2007 and SQL Server 2005 is still valid. Many of the new types introduced in SQL Server 2005 and 2008 are not supported in any version of Access, and the new SharePoint-compatible types introduced in Access 2007 and 2010 are not supported in SQL Server. Hopefully by the end of this article you’ll be able to find the information you need to manage data type conversions between your Access/Jet/ACE application and SQL Server.


Access to SQL Server Migration: Handling Schema Migration Issues blog post by Mary Chipman (3/6/2011):

imageIn this blog post I’ll discuss some of the data migration issues you may encounter when migrating your Access schema to SQL Server. These consist of issues that you should address prior to migrating your data, and others are behavioral differences that you should be aware of. In my experience, it’s better to take a proactive approach and solve any known issues sooner rather than later. Fixes and workarounds after the fact are always more expensive and time-consuming than doing things the right way to begin with. The simple fact is, Access shields you from much of the complexity involved creating in a database application, and once you leave its protective umbrella for SQL Server, you face an infinitely more challenging database engine with a much higher learning curve. You can use the assessment reports in the SSMA Migration Assistant (SSMA) to identify potential issues before you migrate your data, which will not only smooth data migration, but also simplify application development later on.


Access to SQL Server Migration: How to Use SSMA blog post by Mary Chipman (1/28/2011):

imageIn this blog post I’ll walk you through the process of migrating the Access 2007 Northwind database to SQL Server using the SQL Server Migration Assistant for Access (SSMA). You can use SSMA to do all of the heavy lifting, migrating your tables and queries to SQL Server 2008 or SQL Server Azure. SSMA can also link your Access solution to the new SQL Server tables after you have migrated your data.


Migration for Microsoft Access from the Microsoft SQL Server 2005 Web site (current):

imageMicrosoft Access is a database intended for small projects with a few users. When a database grows large, and more users need to work with it, you are ready to move up to the more robust and secure database solution provided by Microsoft SQL Server. This page provides the tools and resources to help you simplify the process of migrating Access to SQL Server. For more information, read Microsoft Access or SQL Server 2005: What's Right in Your Organization? [Emphasis added.]

Remember that it’s the SQL Server team talking when you read the first sentence above.


Optimizing Microsoft Office Access Applications Linked to SQL Server by Andy Baron (11/2006):

imageMicrosoft Office Access supports three primary options for connecting to data stored in Microsoft SQL Server databases:

  • Use the Office Access database engine—originally called the Jet database engine—to communicate with SQL Server over ODBC connections.
  • Create Office Access Project applications that use an OLE DB connection to communicate with SQL Server.
  • Write Microsoft Visual Basic for Applications (VBA) code that uses DAO, ActiveX Data Objects (ADO), or middle-tier objects to connect and manipulate SQL Server data.

This paper focuses on the challenges encountered by Office Access developers who rely on the Office Access (Jet) database engine to connect to SQL Server over ODBC. The most common way this is done is by creating linked tables in Office Access that use the SQL Server ODBC driver to connect to tables in SQL Server databases.

The SQL Server Migration Assistant (SSMA) for Office Access enables you to convert an Office Access database to this type of application by moving your Office Access data to new SQL Server tables and linking to these tables. Any forms, reports, queries, or code that previously worked with the original Office Access tables are automatically connected to the new SQL Server tables.

In an application that uses linked SQL Server tables, two different database engines are at work: the Office Access/Jet database engine that runs on the Office Access client and the SQL Server database engine. The interaction of these two engines can sometimes yield results that are inferior to those obtained by using only the Jet database engine with native Office Access tables. This white paper discusses several of these issues and presents strategies for resolving them. Most of these issues relate to performance or updatability.


Microsoft Access or SQL Server 2005: What's Right in Your Organization? by Luke Chung, FMS, Inc. for Microsoft Corp. (12/2004 revised 7/2006):

imageOrganizations have a wide range of database needs and resources. From simple, short-term needs to long-term mission critical requirements, organizations create and support a variety of databases. Choosing the right technology is an ongoing challenge. Many organizations struggle with deciding whether or when they should be using Microsoft® Access and Microsoft SQL Server™. Both are powerful and established database alternatives with their unique strengths and weaknesses.

Microsoft Access is composed of two parts: the application layer and the data layer (Jet database engine). SQL Server only provides the data layer. The Access application layer can interact with SQL Server, either through linked tables in an .mdb database or directly through an Access Database Project (ADP). Other products like Visual Studio® .NET, Visual Basic®, and C++ can also interact with SQL Server.

Both databases have an important role in most organizations, because each is optimized for different segments of database solutions. The strength of Access is its ease of use, rapid application development environment, and simplistic distribution (assuming the recipient also has the correct version of Access installed). It can even support multiple user shared deployments. The strength of SQL Server is its more robust data integrity, scalability, security, and manageability.

Depending on the situation, the strength of Access may outweigh its deficiencies. Overall, if the database problem is targeted for Microsoft Windows®-based operating systems only and can be solved with Access, the need for SQL Server is minimized. This is particularly true if information workers who are not programmers can use Access to solve their own problems. Not only are immediate costs lower, Access users may create a solution that would be difficult for someone else to understand and create for them as quickly.

For more challenging situations, an information technology (IT) professional creating a SQL Server solution is more appropriate. Whether the front end is in Access or not, a SQL Server database offers many features that a file server Access database cannot. Whether you need triggers, stored procedures, transaction logs, Web application support, or security, SQL Server is a solid choice for critical needs that Access (using the Jet database engine) cannot match.

In most cases, it's easy to determine whether a new application should be using Access (with the Jet database engine) or SQL Server. The challenge for most organizations is how to anticipate and manage the small fraction of Access applications that need to migrate to SQL Server each year.

Few (we estimate less than 2 percent) Access databases need to migrate every year, yet some organizations want to ban Access completely. This is often because IT professionals are included when an Access application is breaking down. They fail to recognize the ability of Access to solve 98 percent of database situations that never require their involvement. When an Access application is created initially, the features needed in the future cannot be anticipated, nor can the budget be justified. It's a case of database evolution, and now it's time to evolve from Access and the Jet database engine. You have many ways to migrate an Access application without losing the existing investment, and an organization that manages this well attains a significant competitive advantage.


Client-Server Application Development Using Microsoft Access 2.0 blog post by Roger Jennings (4/25/2006) describes what I believe was the first Access application linked to a mainframe database (IBM DB2):

The oldest article that I've been able to find that's related to my early Access client/server development projects is the "Client-Server Application Development Using Microsoft Access 2.0" presentation from Tech•Ed 95 by Microsoft's Christopher Payne. (Chris Payne left Microsoft in March 2007.)

The article—last modified on February 26, 1995—had been available as a Web page from http://www.microsoft.com/Accessdev/ARTICLES/AC302.HTM. Details are preserved here because the Web version is no longer available from the Microsoft site, and it appears to have disappeared from the Google cache. Figures were missing from the cached source copy. Microsoft Knowledge Base article Q129613 has a link to a Te9514.exe self-extracting ZIP file that contains a downloadable Microsoft Word version of the article.

My Access 2.0 applications that inspired this article were NSC_ASK.mdb and MSA_OLTP.mdb. NSC_ASK.mdb was a client/server decision-support application for National Semiconductor Corp., which is described in my "An (Almost) Lifetime of BASIC" archive post. NSC_ASK.mdb began as an Access 1.1 front-end for a Hitachi mainframe running an IBM DB2 database. Microsoft didn’t offer an Open Database Connectivity (ODBC) data source for DB2 when I wrote NSC_ASK, so I used an early beta version of Information Builders’ EDA ODBC middleware to link Access front ends on salespersons’ laptops to the data source back end via TCP/IP and a phone modem. I wrote MSA_OLTP.mdb as a contract project for Greg Nelson, an early Access marketer.

National Semiconductor's Margaret Lam and Greg Nelson demonstrated the NSC_ASK and MSA_OLTP applications at Tech•Ed 1995's AC302 session—about a year and a half after Microsoft released Access 1.0 in November 1993. Special Edition Using Access 95 and subsequent editions have used MSA_OLTP.mdb to test backward compatibility and compare client/server data retrieval and update performance with unbound controls.

Remarkably, much of the content of this article still applies to client/server projects with current Access versions. MSA_OLTP.mdb was designed for heads-down telephone order entry by customer service representatives. All order lookup, new order entry, and new customer addition operations use keyboard shortcuts; a mouse isn't required.

My blog post continues with screen shots of the MSA_OLTP.mdb project and an excerpt from Chris Payne’s white paper.

Note that Visual Basic will celebrate it’s 25th birthday on May 20, 2011.


Evolving Microsoft Access Applications to SQL Server by Dan Haught, FMS, Inc. (undated, about 2000):

Learn When and How to Upsize to SQL Server

imageThis whitepaper explores the issues related to upsizing Microsoft Access
applications to take advantage of the performance, security, and reliability of Microsoft SQL Server. Topics discussed include:

  • The Value of Access in Your Organization – a brief discussion of how
    Access provides power and agility to an organization’s users
  • Making the Decision: When to Upsize – an evaluation of the criteria to
    decide if an application has outgrown the capabilities of access
  • Microsoft Access Data Architectures – a discussion of the type of data
    architectures that Access supports
  • Types of Upsizing Projects – There are several approaches to upsizing.
    This section shows how to determine which one is best for you.
  • Planning an Upsizing Project – careful planning results in a successful
    project. This section outlines what to plan for.

FMS Expertise – FMS is a world-leader in both Access and SQL Server.
We can deliver your upsizing project on time and on budget.


Wednesday, April 20, 2011

Output Logs for Successful Migration of Northwind.mdb to a SQL Server Northwind Database with SSMA for Access

Successfully migrating the tables of an Access 2003 Northwind.mdb sample database with the SQL Server Migration Assistant for Access v4.2 generates 325 log entries for 9 tables. You can download Northwind.mdb from my Windows Live Skydrive instance here.

You also can download NwindAzure.mdb, which is a Access front-end for tables linked by a publically accessible Northwind SQL Azure database, here. Running NwindAzure.mdb will open a connection to the Northwind database running in Microsoft’s South Centeral US (San Antonio, TX) data center.

Following is a complete copy of these log entries:

Starting conversion...
Analyzing metadata...
Converting table Northwind.[Categories] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Index name 'CategoryName' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CategoryName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Description' was converted to a check constraint.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Converting table Northwind.[Customers] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Index name 'City' was changed during conversion.
Information: A2SS0029: Index name 'CompanyName' was changed during conversion.
Information: A2SS0029: Index name 'PostalCode' was changed during conversion.
Information: A2SS0029: Index name 'Region' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CustomerID' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CompanyName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ContactName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ContactTitle' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Address' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'City' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Region' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'PostalCode' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Country' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Phone' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Fax' was converted to a check constraint.
Warnings: A2SS0016: Column 'C:\USERS\ADMINISTRATOR\DOCUMENTS\NORTHWIND.MDB.CUSTOMERS.CUSTOMERID' of the primary key is nullable, which SQL Server does not allow. The nullable flag was removed from the target column to avoid problems during loading database objects into SQL Server. If there are rows that contain NULL values, you might encounter problems during data migration.
Converting table Northwind.[Employees] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Index name 'LastName' was changed during conversion.
Information: A2SS0029: Index name 'PostalCode' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'LastName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'FirstName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Title' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'TitleOfCourtesy' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Address' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'City' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Region' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'PostalCode' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Country' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'HomePhone' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Extension' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Notes' was converted to a check constraint.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Converting table Northwind.[HRActions] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Index name 'ActionTypeEffDate' was changed during conversion.
Information: A2SS0029: Index name 'EffectiveDate' was changed during conversion.
Information: A2SS0029: Index name 'HRActionsEmployeeID' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ActionType' was converted to a check constraint.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Converting table Northwind.[Order Details] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Warnings: A2SS0030: Primary key 'PrimaryKey' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Foreign key name 'Order DetailsOrders' was changed during conversion.
Warnings: A2SS0030: Foreign key 'Order DetailsOrders' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Foreign key name 'ProductsOrder Details' was changed during conversion.
Warnings: A2SS0030: Foreign key 'ProductsOrder Details' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Index name 'Order DetailsOrders' was changed during conversion.
Warnings: A2SS0030: Index 'Order DetailsOrders' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Index name 'OrderID' was changed during conversion.
Warnings: A2SS0030: Index 'OrderID' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Index name 'ProductID' was changed during conversion.
Warnings: A2SS0030: Index 'ProductID' has a name that might cause problems for the Access application to function correctly against SQL Server.
Information: A2SS0029: Index name 'ProductsOrder Details' was changed during conversion.
Warnings: A2SS0030: Index 'ProductsOrder Details' has a name that might cause problems for the Access application to function correctly against SQL Server.
Warnings: A2SS0030: Table 'Order Details' has a name that might cause problems for the Access application to function correctly against SQL Server.
Warnings: A2SS0016: Column 'C:\USERS\ADMINISTRATOR\DOCUMENTS\NORTHWIND.MDB.ORDER DETAILS.ORDERID' of the primary key is nullable, which SQL Server does not allow. The nullable flag was removed from the target column to avoid problems during loading database objects into SQL Server. If there are rows that contain NULL values, you might encounter problems during data migration.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Converting table Northwind.[Orders] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Foreign key name 'CustomersOrders' was changed during conversion.
Information: A2SS0029: Foreign key name 'EmployeesOrders' was changed during conversion.
Information: A2SS0029: Foreign key name 'OrdersShippers' was changed during conversion.
Information: A2SS0029: Foreign key name 'ShippersOrders' was changed during conversion.
Information: A2SS0029: Index name 'CustomerID' was changed during conversion.
Information: A2SS0029: Index name 'CustomersOrders' was changed during conversion.
Information: A2SS0029: Index name 'EmployeeID' was changed during conversion.
Information: A2SS0029: Index name 'EmployeesOrders' was changed during conversion.
Information: A2SS0029: Index name 'OrderDate' was changed during conversion.
Information: A2SS0029: Index name 'OrdersShippers' was changed during conversion.
Information: A2SS0029: Index name 'ShippedDate' was changed during conversion.
Information: A2SS0029: Index name 'ShippersOrders' was changed during conversion.
Information: A2SS0029: Index name 'ShipPostalCode' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CustomerID' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipAddress' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipCity' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipRegion' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipPostalCode' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ShipCountry' was converted to a check constraint.
Converting table Northwind.[Products] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Foreign key name 'CategoriesProducts' was changed during conversion.
Information: A2SS0029: Foreign key name 'ProductsCategories' was changed during conversion.
Information: A2SS0029: Foreign key name 'SuppliersProducts' was changed during conversion.
Information: A2SS0029: Index name 'CategoriesProducts' was changed during conversion.
Information: A2SS0029: Index name 'CategoryID' was changed during conversion.
Information: A2SS0029: Index name 'ProductName' was changed during conversion.
Information: A2SS0029: Index name 'ProductsCategories' was changed during conversion.
Information: A2SS0029: Index name 'SupplierID' was changed during conversion.
Information: A2SS0029: Index name 'SuppliersProducts' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ProductName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'QuantityPerUnit' was converted to a check constraint.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Converting table Northwind.[Shippers] ...
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CompanyName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Phone' was converted to a check constraint.
Converting table Northwind.[Suppliers] ...
Warnings: A2SS0021: The hyperlink column 'HomePage' was converted to a text column and, as a result, is no longer a link.
Information: A2SS0029: Primary key name 'PrimaryKey' was changed during conversion.
Information: A2SS0029: Index name 'CompanyName' was changed during conversion.
Information: A2SS0029: Index name 'PostalCode' was changed during conversion.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'CompanyName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ContactName' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'ContactTitle' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Address' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'City' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Region' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'PostalCode' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Country' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Phone' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'Fax' was converted to a check constraint.
Information: A2SS0005: The Zero-length-not-allowed flag on the column 'HomePage' was converted to a check constraint.
Information: A2SS0020: New timestamp column 'SSMA_TimeStamp' created.
Conversion finished with 0 errors, 11 warnings, and 103 informational messages.
Loading objects into database...
Analyzing metadata...
Preparing category Tables of schema Northwind.dbo...
Preparing table Northwind.dbo.[Categories]...
Preparing category Triggers of table Northwind.dbo.[Categories]...
Preparing category Indexes of table Northwind.dbo.[Categories]...
Preparing index Northwind.dbo.[Categories].[Categories$CategoryName]...
Preparing table Northwind.dbo.[Customers]...
Preparing category Triggers of table Northwind.dbo.[Customers]...
Preparing category Indexes of table Northwind.dbo.[Customers]...
Preparing index Northwind.dbo.[Customers].[Customers$City]...
Preparing index Northwind.dbo.[Customers].[Customers$CompanyName]...
Preparing index Northwind.dbo.[Customers].[Customers$PostalCode]...
Preparing index Northwind.dbo.[Customers].[Customers$Region]...
Preparing table Northwind.dbo.[Employees]...
Preparing category Triggers of table Northwind.dbo.[Employees]...
Preparing category Indexes of table Northwind.dbo.[Employees]...
Preparing index Northwind.dbo.[Employees].[Employees$LastName]...
Preparing index Northwind.dbo.[Employees].[Employees$PostalCode]...
Preparing table Northwind.dbo.[HRActions]...
Preparing category Triggers of table Northwind.dbo.[HRActions]...
Preparing category Indexes of table Northwind.dbo.[HRActions]...
Preparing index Northwind.dbo.[HRActions].[HRActions$ActionTypeEffDate]...
Preparing index Northwind.dbo.[HRActions].[HRActions$EffectiveDate]...
Preparing index Northwind.dbo.[HRActions].[HRActions$HRActionsEmployeeID]...
Preparing table Northwind.dbo.[Order Details]...
Preparing category Triggers of table Northwind.dbo.[Order Details]...
Preparing category Indexes of table Northwind.dbo.[Order Details]...
Preparing index Northwind.dbo.[Order Details].[Order Details$Order DetailsOrders]...
Preparing index Northwind.dbo.[Order Details].[Order Details$OrderID]...
Preparing index Northwind.dbo.[Order Details].[Order Details$ProductID]...
Preparing index Northwind.dbo.[Order Details].[Order Details$ProductsOrder Details]...
Preparing table Northwind.dbo.[Orders]...
Preparing category Triggers of table Northwind.dbo.[Orders]...
Preparing category Indexes of table Northwind.dbo.[Orders]...
Preparing index Northwind.dbo.[Orders].[Orders$CustomerID]...
Preparing index Northwind.dbo.[Orders].[Orders$CustomersOrders]...
Preparing index Northwind.dbo.[Orders].[Orders$EmployeeID]...
Preparing index Northwind.dbo.[Orders].[Orders$EmployeesOrders]...
Preparing index Northwind.dbo.[Orders].[Orders$OrderDate]...
Preparing index Northwind.dbo.[Orders].[Orders$OrdersShippers]...
Preparing index Northwind.dbo.[Orders].[Orders$ShippedDate]...
Preparing index Northwind.dbo.[Orders].[Orders$ShippersOrders]...
Preparing index Northwind.dbo.[Orders].[Orders$ShipPostalCode]...
Preparing table Northwind.dbo.[Products]...
Preparing category Triggers of table Northwind.dbo.[Products]...
Preparing category Indexes of table Northwind.dbo.[Products]...
Preparing index Northwind.dbo.[Products].[Products$CategoriesProducts]...
Preparing index Northwind.dbo.[Products].[Products$CategoryID]...
Preparing index Northwind.dbo.[Products].[Products$ProductName]...
Preparing index Northwind.dbo.[Products].[Products$ProductsCategories]...
Preparing index Northwind.dbo.[Products].[Products$SupplierID]...
Preparing index Northwind.dbo.[Products].[Products$SuppliersProducts]...
Preparing table Northwind.dbo.[Shippers]...
Preparing category Triggers of table Northwind.dbo.[Shippers]...
Preparing category Indexes of table Northwind.dbo.[Shippers]...
Preparing table Northwind.dbo.[Suppliers]...
Preparing category Triggers of table Northwind.dbo.[Suppliers]...
Preparing category Indexes of table Northwind.dbo.[Suppliers]...
Preparing index Northwind.dbo.[Suppliers].[Suppliers$CompanyName]...
Preparing index Northwind.dbo.[Suppliers].[Suppliers$PostalCode]...
Starting Phase #0
Synchronizing Northwind.dbo ...
Loading to database new table Northwind.dbo.[Categories] ...
Loading to database new table Northwind.dbo.[Customers] ...
Loading to database new table Northwind.dbo.[Employees] ...
Loading to database new table Northwind.dbo.[HRActions] ...
Loading to database new table Northwind.dbo.[Order Details] ...
Loading to database new table Northwind.dbo.[Orders] ...
Loading to database new table Northwind.dbo.[Products] ...
Loading to database new table Northwind.dbo.[Shippers] ...
Loading to database new table Northwind.dbo.[Suppliers] ...
Loading to database new table Northwind.dbo.[Categories] primary keys ...
Loading to database new table Northwind.dbo.[Customers] primary keys ...
Loading to database new table Northwind.dbo.[Employees] primary keys ...
Loading to database new table Northwind.dbo.[HRActions] primary keys ...
Loading to database new table Northwind.dbo.[Order Details] primary keys ...
Loading to database new table Northwind.dbo.[Orders] primary keys ...
Loading to database new table Northwind.dbo.[Products] primary keys ...
Loading to database new table Northwind.dbo.[Shippers] primary keys ...
Loading to database new table Northwind.dbo.[Suppliers] primary keys ...
Loading to database new index Northwind.dbo.[Categories].[Categories$CategoryName] ...
Loading to database new index Northwind.dbo.[Customers].[Customers$City] ...
Loading to database new index Northwind.dbo.[Customers].[Customers$CompanyName] ...
Loading to database new index Northwind.dbo.[Customers].[Customers$PostalCode] ...
Loading to database new index Northwind.dbo.[Customers].[Customers$Region] ...
Loading to database new index Northwind.dbo.[Employees].[Employees$LastName] ...
Loading to database new index Northwind.dbo.[Employees].[Employees$PostalCode] ...
Loading to database new index Northwind.dbo.[HRActions].[HRActions$ActionTypeEffDate] ...
Loading to database new index Northwind.dbo.[HRActions].[HRActions$EffectiveDate] ...
Loading to database new index Northwind.dbo.[HRActions].[HRActions$HRActionsEmployeeID] ...
Loading to database new index Northwind.dbo.[Order Details].[Order Details$Order DetailsOrders] ...
Loading to database new index Northwind.dbo.[Order Details].[Order Details$OrderID] ...
Loading to database new index Northwind.dbo.[Order Details].[Order Details$ProductID] ...
Loading to database new index Northwind.dbo.[Order Details].[Order Details$ProductsOrder Details] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$CustomerID] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$CustomersOrders] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$EmployeeID] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$EmployeesOrders] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$OrderDate] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$OrdersShippers] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$ShippedDate] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$ShippersOrders] ...
Loading to database new index Northwind.dbo.[Orders].[Orders$ShipPostalCode] ...
Loading to database new index Northwind.dbo.[Products].[Products$CategoriesProducts] ...
Loading to database new index Northwind.dbo.[Products].[Products$CategoryID] ...
Loading to database new index Northwind.dbo.[Products].[Products$ProductName] ...
Loading to database new index Northwind.dbo.[Products].[Products$ProductsCategories] ...
Loading to database new index Northwind.dbo.[Products].[Products$SupplierID] ...
Loading to database new index Northwind.dbo.[Products].[Products$SuppliersProducts] ...
Loading to database new index Northwind.dbo.[Suppliers].[Suppliers$CompanyName] ...
Loading to database new index Northwind.dbo.[Suppliers].[Suppliers$PostalCode] ...
Loading to database new table Northwind.dbo.[Order Details] foreign keys ...
Loading to database new table Northwind.dbo.[Orders] foreign keys ...
Loading to database new table Northwind.dbo.[Products] foreign keys ...
Loading to database new table Northwind.dbo.[Categories] check constraints ...
Loading to database new table Northwind.dbo.[Customers] check constraints ...
Loading to database new table Northwind.dbo.[Employees] check constraints ...
Loading to database new table Northwind.dbo.[HRActions] check constraints ...
Loading to database new table Northwind.dbo.[Order Details] check constraints ...
Loading to database new table Northwind.dbo.[Orders] check constraints ...
Loading to database new table Northwind.dbo.[Products] check constraints ...
Loading to database new table Northwind.dbo.[Shippers] check constraints ...
Loading to database new table Northwind.dbo.[Suppliers] check constraints ...
Load operation is complete.
Migrating data...
Analyzing metadata...
Preparing table Northwind.[Categories]...
Migrating data for the table Categories from the database Northwind...
Data migration complete: 8 rows of 8 migrated.

Preparing table Northwind.[Customers]...
Migrating data for the table Customers from the database Northwind...
Data migration complete: 91 rows of 91 migrated.

Preparing table Northwind.[Employees]...
Migrating data for the table Employees from the database Northwind...
Data migration complete: 9 rows of 9 migrated.

Preparing table Northwind.[HRActions]...
Migrating data for the table HRActions from the database Northwind...
Data migration complete: 0 rows of 0 migrated.

Preparing table Northwind.[Order Details]...
Migrating data for the table Order Details from the database Northwind...
Data migration complete: 2155 rows of 2155 migrated.

Preparing table Northwind.[Orders]...
Migrating data for the table Orders from the database Northwind...
Data migration complete: 830 rows of 830 migrated.

Preparing table Northwind.[Products]...
Migrating data for the table Products from the database Northwind...
Data migration complete: 77 rows of 77 migrated.

Preparing table Northwind.[Shippers]...
Migrating data for the table Shippers from the database Northwind...
Data migration complete: 3 rows of 3 migrated.

Preparing table Northwind.[Suppliers]...
Migrating data for the table Suppliers from the database Northwind...
Data migration complete: 29 rows of 29 migrated.

Data migration operation has finished.
9 table(s) successfully migrated.
0 table(s) partially migrated.
0 table(s) failed to migrate.
Linking tables...
Analyzing metadata...
Preparing mdb-file Northwind...
Preparing table Northwind.[Categories]...
Preparing table Northwind.[Customers]...
Preparing table Northwind.[Employees]...
Preparing table Northwind.[HRActions]...
Preparing table Northwind.[Order Details]...
Preparing table Northwind.[Orders]...
Preparing table Northwind.[Products]...
Preparing table Northwind.[Shippers]...
Preparing table Northwind.[Suppliers]...
Starting Phase #0
Processing table '[Categories]' in file 'Northwind'... ...
Linking & backing up table 'Categories' from database 'Northwind'...
Processing table '[Customers]' in file 'Northwind'... ...
Linking & backing up table 'Customers' from database 'Northwind'...
Processing table '[Employees]' in file 'Northwind'... ...
Linking & backing up table 'Employees' from database 'Northwind'...
Processing table '[HRActions]' in file 'Northwind'... ...
Linking & backing up table 'HRActions' from database 'Northwind'...
Processing table '[Order Details]' in file 'Northwind'... ...
Linking & backing up table 'Order Details' from database 'Northwind'...
Processing table '[Orders]' in file 'Northwind'... ...
Linking & backing up table 'Orders' from database 'Northwind'...
Processing table '[Products]' in file 'Northwind'... ...
Linking & backing up table 'Products' from database 'Northwind'...
Processing table '[Shippers]' in file 'Northwind'... ...
Linking & backing up table 'Shippers' from database 'Northwind'...
Processing table '[Suppliers]' in file 'Northwind'... ...
Linking & backing up table 'Suppliers' from database 'Northwind'...
Link & back up complete