0
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 有问题我猜

在此处输入图像描述

4

1 回答 1

1

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

首先获取数据库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

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

于 2022-03-05T17:28:25.233 回答