sqlserver打开或创建mdf失败
软件中工程用到sqlserver数据库存放数据,习惯性将数据放在桌面,但无法使用SQL Server Management Studio将数据库附加进来。与此相同的问题还有如下几种情形:
问题现象1:
Msg 5133, Level 16, State 1, Line 1
Directory lookup for the file
"C:\Users\SQLTwins\Documents\AdventureWorks2014\AdventureWorks2014_Data.mdf"
failed with the operating system error 5(Access is denied.).
参考:https://nakulvachhrajani.com/2017/04/10/0405-sql-server-msg-5133-backuprestore-errors-directory-lookup-for-file-failed-operating-system-error-5access-is-denied/
问题现象2:SQL Server Management Studio附加桌面路径数据库找不到所在文件夹
问题现象3:在桌面无法使用代码或者工具创建数据库文件
问题现象4:打开从其他地方拷贝的数据库文件,提示权限不够(非管理员权限)
本质:文件所在路径的ACL权限不够。修改ACL权限方法如下:
解决办法:
方法一:修改目录权限
在【编辑】里增加【添加】everyone,确认,然后勾选【完全控制】、【修改】点击【应用】即可。
注:此处添加everyone用户组是为了简单,用户也可以添加需要创建或修改数据库文件的账户。
方法二:使用cacls或者icacls修改目录权限
新建bat脚本,放入当前目录执行即可
@echo off
icacls "%cd%" /grant Everyone:(OI)(CI)F /T
pause
或者
@echo off
cacls "%cd%" /t /e /g everyone:f
pause
方法三:使用模拟启动cmd方式(dotnet环境下可以使用)
private static void ModifyProjectACL(string directory)
{
using (var myPro = new Process())
{
myPro.StartInfo.FileName = @"cmd.exe";
myPro.StartInfo.UseShellExecute = false;
myPro.StartInfo.RedirectStandardInput = true;
myPro.StartInfo.RedirectStandardOutput = true;
myPro.StartInfo.RedirectStandardError = true;
myPro.StartInfo.CreateNoWindow = true;
myPro.Start();
myPro.StandardInput.WriteLine(directory.Substring(0, 2));
myPro.StandardInput.WriteLine(@"cd " + directory);
myPro.StandardInput.WriteLine(@"icacls " + "\"" + "%cd%" + "\"" + " /grant Everyone:(OI)(CI)F /T");
myPro.StandardInput.AutoFlush = true;
}
}
方法四:dotnet环境下
// Adds an ACL entry on the specified directory for the specified account.
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account, Rights,ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
// Set the sub directory's ACL
foreach (var ditem in dInfo.GetDirectories())
{
AddDirectorySecurity(ditem.FullName, Account, Rights, ControlType);
}
}
调用:
AddDirectorySecurity(path,"Everyone",FileSystemRights.FullControl, AccessControlType.Allow);
参考:
[1] https://nakulvachhrajani.com/2017/04/10/0405-sql-server-msg-5133-backuprestore-errors-directory-lookup-for-file-failed-operating-system-error-5access-is-denied/
[2] https://docs.microsoft.com/zh-cn/dotnet/api/system.security.accesscontrol.directorysecurity?redirectedfrom=MSDN&view=netframework-4.8
[3] https://www.cnblogs.com/junior/archive/2012/03/31/2426355.html
sqlserver打开或创建mdf失败相关推荐
- sqlserver创建对于job失败_创建维护计划失败创建 对于 JobStep“子计划”失败
创建维护计划失败. =================================== 创建 对于 JobStep"子计划"失败. (Microsoft.SqlServer.M ...
- 执行transact mysql_创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL
机房收费系统完成了,但是我是在笔记本上敲得,没有实现异地发布,结局只能是被PASS掉了~回来重新导出自己的数据库到台式机上,由于我笔记本装的SQL和台式机版本是不一样的,所以遇到一些问题,具体解决方法 ...
- 创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL语句或批处理时发生了异常。
创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL语句或批处理时发生了异常. 参考文章: (1)创建数据库失败((Microsoft.SqlServer. ...
- UNI-APP,plus.runtime.openURL打开手机自带浏览器,出现“下载地址不可用,创建任务失败”的Bug
在UNI-APP中,有时候需要打开手机自带的浏览器,下载更新软件,通常使用 //#ifdef APP-PLUS plus.runtime.openURL(res.url); //#endif 但是,最 ...
- 【経験談】VS2013创建数据库连接失败问题
这是第一次在VS中建立数据库连接,连蒙带猜地总结以下经验. 提取截图加编辑文本用了近一个小时,但是,相信我,看完它不过十分钟的事. 中间一些问题的原因还没有参悟透,留待以后补充.有大神路过的话,万望赐 ...
- 添加Sql作业,新建步骤出现:从IClassFactory为CLSID为{AA40D1D6-CAEF-4A56-B9BB-D0D3DC976BA2}的COM组件创建实例失败
从ICassFactory为CLSID为{17BCA6E8-A950-497E-B2F9-AF6AA475916F}的COM组件创建实例失败,原因是出现以下错误:c001f011.(Microsoft ...
- 缓存服务器syns to listen sockets drop导致创建socket失败
问题描述: 最近遇到了一个syn丢包的情况,当系统磁盘.网络.cpu都无压力的时候,系统莫名其妙出现"sync to listen sockets drop"问题:无论带宽是10M ...
- C/C++注册表【2】打开,创建,删除
注册表打开,创建,删除 所需要头文件:windows.h 常用函数 (1) 打开一个键的函数: RegOpenKeyEx 函数定义:LONG RegOpenKeyEx(HKEY hKey, ...
- 用于打开和创建SQLite,Microsoft SQL Server,PostgreSQL和MySQL SQL数据库的WPF对话框
目录 介绍 创建数据库对话框 打开数据库对话框 背景 使用代码 显示数据库对话框 加密 序列化 构建演示应用程序 遗漏 从Github下载源代码 介绍 本文介绍了一些用于创建和打开SQL数据库的便捷对 ...
最新文章
- 美国中央情报局CIA正通过开发人工智能项目,收集与检索社交媒体情报
- Nignx平滑升级(1.8.0-1.8.1)
- CSU 1328 近似回文词【最长回文字符串(三种方法)】
- qtp启动java程序_转: QTP六脉神剑之调用Java程序
- 中国电子学会scratch等级考试三级
- Python2.7.16安装(Win10)
- Python解决使用列表副本问题
- CListCtrl控件的使用指南
- Hbuilder x安装教程(前端html5开发)
- 二阶切比雪夫多项式实现(scala版、python版)
- Ubuntu安装Hbase数据库
- Android升级WebView浏览器内核版本
- 360发起网民隐私保卫战
- IDEA 依赖自动导入,不用每次手动点击Load Maven Changes图标
- 树莓派Linux-raspberrypi域名解析失败:Temporary failure in name resolution
- 调试屏幕分辨率变化html页面变化,屏幕分辨率如何自动调整网页显示问题
- 基于Python校园二手书籍交易系统设计与实现 开题报告
- 详解git push后出现src refspec dev does not match any
- linux下使用tar命令解压.tar.gz文件是参数的说明
- 地平线征程5开发平台简介