操作系统返回错误5

2010-11-03 09:01:00 zwk_9 阅读数 2861

执行还原权限不够出错le.
尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。

在还源数据库时出现以下错误(详情参见下图):

System.Data.SqlClient.SqlError: 在对 'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/BusinessDB.mdf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。 (Microsoft.SqlServer.Express.Smo)

 

原因分析:

没有对"C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/"创建文件的权限(可以把它复制到data),这是SQL2005对文件夹的安全性限制。

解决办法:

修改文件夹到'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/”或其他盘的文件夹下(如E:/mydb)即可。注意:mdf文件和ldf文件的路径都要修改。

 

2013-09-29 08:23:11 fjseryi 阅读数 16442

SQL数据库还原时错误:操作系统返回了错误 '5(拒绝访问)'的解决办法

解决SQL Server 2005 还原数据库错误:System.Data.SqlClient.SqlError: 在对   'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\BusinessDB.mdf' 尝试   'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问)'

在还源数据库时出现以下错误(详情参见下图):

 

System.Data.SqlClient.SqlError:  在对 'C:\Program Files\Microsoft SQL   Server\MSSQL.1\MSSQL\BusinessDB.mdf' 尝试   'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。   (Microsoft.SqlServer.Express.Smo)

原因分析:

没有对"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\"创建文件的权限(可以把它复制到data),这是SQL2005对文件夹的安全性限制。

解决办法:

修改文件夹到'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\”或其他盘的文件夹下(如E:\mydb)即可。注意:mdf文件和ldf文件的路径都要修改。

 

2019-01-09 10:55:00 Surbowl 阅读数 3873

操作系统已经向 SQL Server 返回了错误 21 设备未就绪

错误代码

===================================

在文件“X:\Data\Test.mdf”中、偏移量为 0x00000000350000 的位置执行 读取 期间,操作系统已经向 SQL Server 返回了错误 21(设备未就绪。)。SQL Server 错误日志和操作系统错误日志中的其他消息可能会提供更多详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致; 有关详细信息,请参阅 SQL Server 联机丛书。 (.Net SqlClient Data Provider)


有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft SQL Server&EvtSrc=MSSQLServer&EvtID=823&LinkId=20476


服务器名称: XXXXXXX
错误号: 823
严重性: 24
状态: 2
过程: plan_persist_runtime_stats_merged
行号: 2


程序位置:

在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 在 System.Data.SqlClient.SqlCommand.ExecuteReader() 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.QueryStorePropertyHandler.PopulateProperties(INodeInformation source, INameObjectCollection properties) 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NodeContext.PopulateProperties() 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.SetStaticProperties(NodeContext nodeContext) 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.BuildStaticItem(IList1 nodes, INodeInformation source, INavigableItem sourceItem)
在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.Build(IList1 nodes, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter) 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NonContextFilterNavigableItemBuilder.Build(IList1 targetList, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter)
在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest request)
在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)

可能的原因

在SQLServer启动过程中,如果存放数据的分区还无法正常加载,例如:使用Bitlocker加密(即使开机自动解锁也会出现延迟)、远程服务器有延迟等,可能会出现该异常。

可尝试的几种解决方法

1、手动重启数据库
2、如果是学习用途,可考虑将数据转移至无加密的分区或系统盘
3、设置 SQL Server 延迟启动

2012-03-15 10:58:47 leamonjxl 阅读数 1952
create file遇到操作系统错误5拒绝访问
当在sql server 2008创建一个数据库时出现错误:
尝试打开或创建物理文件 'D:\stuDB_data.mdf' 时,CREATE FILE 遇到操作系统错误 5(拒绝访问。

原因及解决方法如下:

这是因为SQL Server的启动帐户(一般是system或某个操作系统管理员),对E盘根目录没有创建文件的权限。右击E盘,在属性里查看“安全”选项卡里查看用户的权限。查看启动帐户是谁,运行services.msc,在服务管理器里找到SQL Server服务,然后看“登录”选项卡,选中本地用户并重启服务。


即:Localsystem


2014-08-20 10:22:22 alisa525 阅读数 16723

1、用打包软件Setup Factory安装软件时,执行bat文件还原数据库出错

bat文件:

@echo off
rem %1 为路径参数;
rem %2 数据库实例名;
rem %3 用户名;
rem %4 密码;
rem /q 执行查询完毕不退出cmd,/Q执行查询完毕退出cmd,-i:Input_File:要在osql中执行的T-SQL脚本的名称(包括路径)。
echo 正在启动SQL SERVER服务...
net start mssqlserver


echo 正在创建数据库,请稍等...

osql -S %2 -U %3 -P %4 /Q 
"IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'AlarmDB') RESTORE DATABASE AlarmDB FROM DISK ='%1\Data\AlarmDB.bak' WITH MOVE 'AlarmDB' TO '%1\Data\AlarmDB.mdf',MOVE 'AlarmDB_log' TO '%1\Data\AlarmDB.ldf'"

echo 数据库创建结束!

osql -S %2 -U %3 -P %4 -i %1\升级sql语句.sql

echo 数据库更新成功!


pause

其中还原数据库的语句实际如下:

IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'AlarmDB') 
RESTORE DATABASE AlarmDB FROM DISK ='C:\Program Files\My\服务器\Data\AlarmDB.bak' 
WITH MOVE 'AlarmDB' TO 'C:\Program Files\My\服务器\Data\AlarmDB.mdf',
MOVE 'AlarmDB_log' TO 'C:\Program Files\My\服务器\Data\AlarmDB.ldf'


执行时出错:

消息 3634,级别 16,状态 1,第 3 行

在对 'C:\Program Files\My\服务器\Data\AlarmDB.mdf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
消息 3156,级别 16,状态 5,第 3 行
文件 'AlarmDB' 无法还原为 'C:\Program Files\My\服务器\Data\AlarmDB.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3634,级别 16,状态 1,第 3 行
在对 'C:\Program Files\My\服务器\Data\AlarmDB.ldf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
消息 3156,级别 16,状态 5,第 3 行
文件 'AlarmDB_log' 无法还原为 'C:\Program Files\My\服务器\Data\AlarmDB.ldf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3119,级别 16,状态 1,第 3 行
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
消息 3013,级别 16,状态 1,第 3 行
RESTORE DATABASE 正在异常终止。


2、原因:安装目录 'C:\Program Files\My\服务器\Data‘的Data文件夹权限不够,是只读的,不能写入。


3、解决办法:

方法一:
更换安装路径,不安装在C:\Program Files\My\服务器\Data\,安装在C:\My\服务器\Data\
打包软件中也可以设置为C:\My\%ProductName%,或者D:\My\%ProductName%


方法二:
更改文件夹权限:(win7系统)


 







4、完成第三步后执行结果如下:

已为数据库 'AlarmDB',文件 'AlarmDB' (位于文件 1 上)处理了 176 页。
已为数据库 'AlarmDB',文件 'AlarmDB_log' (位于文件 1 上)处理了 2 页。
RESTORE DATABASE 成功处理了 178 页,花费 0.036 秒(38.574 MB/秒)。



...