SQL Server附加数据库出错,错误代码5123

当在SQL Server中附加数据库时,有可能会遇到错误代码5123。这种错误代码表示无法将文件复制到目标位置。这通常是由于权限问题或目标文件正在使用而导致的。以下是附加数据库出错时的一些解决方法和步骤。

1. 检查权限

请确保当前登录的用户有足够的权限来修改目标位置。对于SQL Server,这通常意味着需要具有修改目标文件所在的目录的权限。您可以使用以下脚本来检查目录权限:

EXEC xp_cmdshell 'dir D:\SQLData\TestDB.mdf'

如果此脚本启动了,则表明当前用户具有执行xp_cmdshell的权限。否则,您需要使用以下脚本来授予权限:

sp_configure 'show advanced options',1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_configure 'xp_cmdshell',1
GO
RECONFIGURE WITH OVERRIDE
GO

注意:为了安全起见,不建议开启xp_cmdshell,因为它可能被用来执行危险的任务。

如果您确定该用户具有目标位置的权限,则可以将其更改为选择源文件的权限。您可以使用以下脚本将目标目录的权限更改为选择的用户账户:

EXEC xp_cmdshell 'icacls D:\SQLData\TestDB.mdf /grant USERNAME:(R)'

2. 检查文件是否正在使用

请确保源文件和目标位置之间的任何连接都已断开。特别是,如果同一SQL Server实例中已经附加了该数据库,则应将其分离,然后再次进行尝试。您可以使用以下脚本来检查数据库状态,并使其脱机:

USE master;
GO

ALTER DATABASE TestDB SET OFFLINE WITH ROLLBACK IMMEDIATE;
GO

ALTER DATABASE TestDB SET ONLINE;
GO

如果还有其他进程占用了源文件或目标位置,您可以使用Windows任务管理器或其他进程监控工具来终止进程。如果不能终止进程,请重启计算机以释放文件句柄。

示例说明

示例一

错误场景:当执行以下命令附加数据库时:

CREATE DATABASE TestDB ON PRIMARY 
  (NAME = TestDB_data, 
   FILENAME = 'D:\SQLData\TestDB.mdf', 
   SIZE = 10MB, 
   FILEGROWTH = 10%)
LOG ON 
  (NAME = TestDB_log, 
   FILENAME = 'D:\SQLLogs\TestDB.ldf', 
   SIZE = 5MB, 
   FILEGROWTH = 5%)

错误代码5123将返回。这是因为D:\SQLData\TestDB.mdf和D:\SQLLogs\TestDB.ldf可能已被打开或在使用状态下。

解决方法:确保数据库文件未被锁定,没有权限问题或文件夹不存在。如果尝试将数据库文件放在其他文件夹中,则授予权限。有时还可以重启数据库来解决该问题。

示例二

错误场景:当尝试通过SQL Server Management Studio附加本地文件时,错误代码5123将返回。这是因为该文件已被附加到任意数据库中。

解决方法:打开SQL Server Management Studio,运行以下脚本:

SELECT 
DB_NAME(database_id), 
physical_name 
FROM sys.master_files 
WHERE physical_name = 'D:\SQLData\TestDB.mdf'

此脚本将返回使用数据库文件的所有数据库的列表。在列表中,找到并分离此文件的数据库。现在可以重新附加文件到SQL Server。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server附加数据库出错,错误代码5123 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 升级到mysql-connector-java8.0.27的注意事项

    升级到mysql-connector-java8.0.27需要注意以下事项: 1. 检查应用程序兼容性 在升级之前,需要检查应用程序是否兼容新版本的 mysql-connector-java8.0.27。升级过程中可能会出现一些函数或参数不再支持的情况,可能导致应用程序出错。因此,在升级之前请仔细阅读mysql-connector-java8.0.27的文档…

    database 2023年5月18日
    00
  • 教你使用Psycopg2连接openGauss的方法

    下面是“教你使用Psycopg2连接openGauss的方法”的完整攻略。 Psycopg2和openGauss简介 Psycopg2是一个Python数据库连接库,专门用于连接PostgreSQL数据库。openGauss是一款开源的高性能数据库,与PostgreSQL基本兼容,因此也可以使用Psycopg2连接openGauss数据库。 安装Psycop…

    database 2023年5月18日
    00
  • 傻瓜式用Eclipse连接MySQL数据库

    下面是傻瓜式用Eclipse连接MySQL数据库的攻略。 前置条件 已安装Eclipse,建议使用最新版本。 已安装MySQL数据库,建议使用最新版本。 已安装MySQL JDBC驱动。 步骤 1. 导入MySQL JDBC驱动 首先需要将MySQL JDBC驱动导入Eclipse。 在Eclipse中,选择“Window” -> “Preferenc…

    database 2023年5月18日
    00
  • asp经典入门教程 在ASP中使用SQL 语句

    《ASP经典入门教程》是一本入门级别的ASP学习教程,本书详细介绍了ASP的基本概念、语法、组件和常用技术。其中使用SQL语句是ASP开发中必须掌握的内容之一。下面将详细讲解ASP中使用SQL语句的完整攻略: 使用SQL语句的流程 ASP中使用SQL语句需要经历以下几个步骤: 创建数据库连接对象Set conn = Server.CreateObject(“…

    database 2023年5月21日
    00
  • 详解MySQL比较运算符

    MySQL 中的比较运算符主要包括: 等于运算符:= 用于比较两个值是否相等,如果相等则返回 TRUE,否则返回 FALSE。 例: SELECT * FROM students WHERE name = '张三'; 不等于运算符:<> 用于比较两个值是否不相等,如果不相等则返回 TRUE,否则返回 FALSE。 例: SEL…

    MySQL 2023年3月9日
    00
  • redis(14)主从复制

    Redis主从复制 主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。 作用: 读写分离,性能扩展 容灾快速恢复 上图将主服务器复制了3份从服务器,主服务器进行写操作,从服务器进行读操作,读写分离,减少压力  复制原理 Slave 启动成功连接到 ma…

    Redis 2023年4月10日
    00
  • SQL查询方法精华集

    SQL查询方法精华集 简介 本文将介绍SQL查询方法的精华集,涵盖了常见的查询语句以及一些高级的查询方法。可以快速提高你在SQL查询方面的技能,适用于初学者和中级SQL使用者。 常见查询语句 1. SELECT语句 用于从表中获取数据。示例如下: SELECT * FROM 表名; 其中,*表示返回所有列;表名是你要查询的表名。 2. WHERE语句 用于指…

    database 2023年5月21日
    00
  • tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】

    下面是 “tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】” 的完整攻略: 1. 连接数据库 在使用数据库之前,需要先在应用配置文件中进行数据库的相关配置。具体操作如下: 打开 application 目录下的 config 目录; 打开 database.php 文件; 修改相应的数据库连接信息,例如: return [ // 数据库类型 ‘t…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部