将数据库从 Microsoft SQL 文件夹移动到 App_Data 文件夹 (appseting.json)

Moving DataBase from Microsoft SQL folder to App_Data folder (appseting.json)

1. "WebApi": "Data Source=.;Initial Catalog=TaskDB; Integrated Security=true"
   

2. "WebApi": "Server=(localdb)\mssqllocaldb;AttachDBFilename=%CONTENTROOTPATH%\App_Data\TaskDB.mdf;Trusted_Connection=true;MultipleActiveResultSets=true"

我正在尝试将我的数据库从 Microsoft SQL 的主文件夹移动到项目文件夹 App_Data,但由于某种原因它不起作用。我不知道为什么我的连接字符串可能是错误的。所以 1 号工作正常,但它在 Microsoft SQL 的主文件夹中,但我猜 2 号有问题

数据库文件在SQL服务器手中是独占的。联机时不能移动数据库。使数据库离线,要求没有人连接到数据库。

首先获取数据库 offline 然后尝试移动文件。您可以使用 SSMS 和查询使数据库脱机。第一行代码终止所有活动会话然后设置数据库多用户;但在任何人都可以连接到数据库之前它必须处于离线状态,因此所有这些代码必须一起执行。

 ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
 GO
 ALTER DATABASE DatabaseName SET MULTI_USER
 GO
 USE master
 GO
 ALTER DATABASE DATABASE_NAME SET OFFLINE

请注意,当您将文件移动到另一个位置时,如果您在使数据库脱机之前未设置新文件名,则无法将数据库带入 ONLINE。 将此代码用于您要移动的所有文件。

ALTER DATABASE TEST 
    MODIFY FILE (NAME = 'LOGICAL_NAME', FILENAME = 'New_Directort\Filename.mdf')

移动文件后,使用此语句使数据库联机。

ALTER DATABASE DATABASE_NAME SET ONLINE

正如你所看到的,这个动作不是一种,可以没有计划地完成。特别是应用程序代码。尝试在应用程序代码中执行此操作时;那么包括应用程序连接在内的所有会话都将丢失。那你就不能继续前进了。