SQL Server使用命令附加数据库无ldf日志文件

需要将一台电脑[A]上使用docker创建的SQL Server数据库内的一个数据库[xzaj]复制到另一台电脑[B]的docker创建的SQL Server数据库中。由于原始数据库的日志ldf文件比较大,因此将数据库复制到另一台电脑中,将不复制ldf文件。

具体步骤如下:

1. 提取电脑A中docker的SQL Server数据库文件到本地磁盘,文件有xzaj.mdf,xzaj_data2.ndf,xzaj_data3.ndf

2. 在电脑B中先创建xzaj数据库

3. 将步骤一内的3个文件直接复制到电脑B的docker所创建的SQL Server数据库的容器卷中,这里路径是/var/opt/mssql/data,直接将步骤二中创建xzaj数据库产生的所有文件替换

4. 重启电脑B的docker SQL Server数据库

5. 使用Navicat链接电脑B的docker SQL Server数据库,依次执行下面4条语句

 6. 执行好之后重启电脑B中docker SQL Server数据库,然后使用Navicat链接即可

----------------------------------------

参考如下

当你在 SQL Server 中附加数据库时遇到错误提示无法重建日志,这通常是因为数据库在关闭时存在打开的事务,没有进行完全的检查点,或者数据库处于只读状态。如果日志文件被手动删除或由于硬件故障而丢失,也会出现这个问题。以下是一些可能的解决方案:

1. **新建一个同名数据库**:首先尝试创建一个与要附加的数据库同名的新数据库。这可以帮助确定文件路径和文件访问权限是否正确。

2. **停止数据库服务**:在操作系统层面停止 SQL Server 数据库服务,然后将原始的数据库文件(包括 .mdf 和 .ldf)放到新数据库文件所在的位置。

3. **启动数据库服务**:重新启动 SQL Server 服务。此时,数据库可能处于 SUSPECT 状态。

4. **设置紧急模式**:在 SQL Server Management Studio (SSMS) 中,或者通过 T-SQL 命令,将数据库设置为紧急模式。这可以通过以下命令完成:
```sql
ALTER DATABASE [数据库名] SET EMERGENCY
```

5. **设置单用户模式**:将数据库设置为单用户模式,这样可以避免其他用户干扰恢复过程。
```sql
ALTER DATABASE [数据库名] SET SINGLE_USER
```

6. **检查和修复数据库**:使用 `DBCC CHECKDB` 命令检查数据库的完整性,并在必要时使用 `REPAIR_REBUILD` 或 `REPAIR_ALLOW_DATA_LOSS` 选项修复数据库。
```sql
DBCC CHECKDB([数据库名], REPAIR_REBUILD)
```

7. **恢复多用户模式**:修复完成后,将数据库设置回多用户模式。
```sql
ALTER DATABASE [数据库名] SET MULTI_USER
```

8. **重新附加数据库**:最后,尝试重新附加数据库。

请注意,这些步骤可能会因 SQL Server 的不同版本而有所不同,并且在执行这些操作之前,你应该确保已经备份了所有重要的数据。如果你不熟悉这些操作,建议在执行之前咨询数据库管理员或专业人士。同时,确保你有足够的权限来执行这些操作,并且对数据库文件的路径和文件系统权限有足够的控制。

 

posted @ 2024-09-04 11:15  margo  阅读(44)  评论(0编辑  收藏  举报