The first question we need to discuss is, "Why do we want to upsize a file server database to client-server?" The main reasons to do this are the benefits that a client-server configuration can offer, including improved performance, security, and reliability. Database application solutions inherently grow and become more complex over time. Developers need the assurance that they have a path to scale up along as their applications become larger and more complex and must support more users. In addition to scaling an existing application, that process of upsizing is also useful for jump-starting client-server development. By this I mean that Microsoft Access is a very powerful file server database management system that, in addition to allowing a developer to build solid solutions, also offers the ability to rapidly prototype client-server solutions for prospective clients. Microsoft Access' rapid application development tools allow for many iterations of a prototype without the inherent complexities of client-server. It also allows for testing the initial designs without deploying the final, more robust back end. Once the plan is bought off on, the upsizing process allows the developer to use the initial prototyping work to quickly build the data structure and rules on the server to jump-start the server-based work.
Before we can upsize an application to SQL Server, there are several important design issues we need to take into consideration. Ideally, we would design an application with client-server deployment in mind from the very beginning. As we will see, the design to build an optimized client-server application is often very different than a file server–only application. If you have an existing application that was not built with client-server in mind you will likely need to retrofit your application in order to take advantage of the upsizing process to follow.