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 的不同版本而有所不同,并且在执行这些操作之前,你应该确保已经备份了所有重要的数据。如果你不熟悉这些操作,建议在执行之前咨询数据库管理员或专业人士。同时,确保你有足够的权限来执行这些操作,并且对数据库文件的路径和文件系统权限有足够的控制。
本文来自博客园,作者:margo,转载请注明原文链接:https://www.cnblogs.com/ZMargo/articles/18396088