Databases aren't standalone resources that can be moved between instances at will.
You need to move logins along with the databases, and logins live in the master database, not your database.
In other words, you need to limit the objects in your database to make sure it's as instance-independent as possible.
Suppose that you're the administrator of hundreds of SQL Server instances in a virtualized environment.
Previously, many of your SQL Server computers were running a single departmental application and its database, but you've recently consolidated some of those applications and their databases on a single SQL Server instance to reduce the number of SQL Server computers.
The container is called a DAC package or a DACPAC because of its extension (.dacpac). Because the SQL Azure Database platform doesn't contain an msdb database, these tables exist in the master database in SQL Azure.
The DACPAC contains at least four files: a script that contains all of the database objects or an upgrade script, and three XML files that contain the logical database description. You can use these tables to keep a version history.
If you notice that one instance is being overutilized or underutilized, you'd like to balance the resources by using the dashboard to quiesce a database, then drag and drop it from one instance to another.
Currently, there are a few challenges that you'd have to overcome to implement this idea.
DAC provides a logical representation of your database and a set of services for managing it. NET DAC Management API surfaces its services as a series of methods in the Dac Store and Dac Extraction Unit classes.
The logical representation consists of a container that houses a set of files. The methods include: The DAC registration process updates the dbo.sysdac_history_internal and dbo.sysdac_instances_internal tables in the msdb database to record the process.
To do so, you need a portable, instance-independent, and version-independent database representation that lets you move schema and data.