当前位置:首页 > 系统运维 > 正文内容

SQL Server数据库附加之后只读或是失败的破解

a8116255316年前 (2010-07-22)系统运维6

我们今天主要向大家讲述的是SQL Server数据库附加后只读或是失败解决 *** 及代码实现,相信用过SQL Server数据库的朋友一般都会有这样的经历,当我们在附加SQL Server数据库的时候,会出现附加失败,或附加成功后数据库是只读的。

受此影响,也会导致在安装和部署项目中的自动附加数据库操作失败。

记得自己曾很长一段时间被这个问题困扰,网上也没有相关完整详细的解决说明,为此特将自己的经验与大家分享。

解决此问题的几个关键点如下:

1、该现象只会出现在NTFS文件系统中。

2、由NTFS文件系统的访问权限导致。

一般手工操作的解决方案如下:

1、控制面板—>文件夹选项—>查看 关闭“使用简单文件共享(推荐)”

2、选择存放SQL Server数据库文件的文件夹,右键选择属性,这时会多出一个“安全”选项卡,选择最后一个用户,将该用户的权限设为“完全控制”。

经过这两步操作后,数据库附加失败或附加后只读的问题即可解决。

下面重点讲这两步,用C#代码的实现,因为当我们为项目打包后,不可能让用户手工来执行这些操作

1、C#关闭简单文件共享的代码实现

在百度、Google搜索此问题解决 *** 时,很多的操作 *** 并不正确,经过自己实际操作测试,正确 *** 如下:

注册表文件:

Windows Registry Editor Version 5.00  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]  "forceguest"=dword:00000000 

批处理:

reg add HKLMSYSTEMCurrentControlSetControlLsa /v forceguest /t REG_WORD /d 0x00000000 /f 

假如选中此项,则将上述 0x00000000 改为 0x00000001。

通过修改注册表的方式实现代码如下:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;  Microsoft.Win32.RegistryKey software = key.OpenSubKey(@"SYSTEMCurrentControlSetControlLsa", true);  software.SetValue("forceguest", 0); 

2、C#修改指定文件夹的用户访问权限代码实现如下:(将该用户的权限设置为可写)

string path = this.Context.Parameters["targetdir"]; 

得到文件夹路径

DirectoryInfo dInfo = new DirectoryInfo(path);  DirectorySecurity dSecurity = dInfo.GetaccessControl();  dSecurity.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.CreateFiles, AccessControlType.Allow));  dInfo.SetAccessControl(dSecurity); 

以上的相关内容就是对SQL Server数据库附加后只读或是失败解决 *** 及代码实现的介绍,望你能有所收获。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/22188.html

分享给朋友:

“SQL Server数据库附加之后只读或是失败的破解” 的相关文章

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

windows 7系统如何设置休眠时不断网以便继续完成下载

windows 7系统如何设置休眠时不断网以便继续完成下载

在Windows 7系统的默认设置中,当Windows 7系统处于休眠状态时,会同时断网的。如此一来,无论你正在使用迅雷还是快车等下载工具,同样可以在休眠状态下继续完成下载,最大限度做到从身边的小事开始支持环保。下面我们就详细介绍操作步骤,帮助Windows 7系统用户实现这一节能目标。 首先需要...

windows 7系统开机提示press any key to restart的故障分析及解

windows 7系统开机提示press any key to restart的故障分析及解

Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

上帝不止一个 更多Windows7 快捷模式.

上帝不止一个 更多Windows7 快捷模式.

国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...