在客户机C:Drive中创建数据库时出现操作系统错误5(访问被拒绝)



我正在安装SQL Server Express 2005,这是我的c#windows窗体应用程序的先决条件,在安装程序类的"自定义操作"下,我正在尝试执行下面的脚本,以便在用户计算机上创建我的数据库。

但是,当我选择在C:\驱动器(windows根文件夹)上创建数据库时,我会收到以下错误/异常:

Operating system error 5(access is denied)

如果我在任何其他驱动器中尝试这样做,我不会得到任何错误。

请帮助我。我如何获得此SQL查询的相关权限?

USE [master]
GO
/****** Object:  Database [Society_security_database]    Script Date: 08/11/2012 14:26:23 ******/
CREATE DATABASE [Society_security_database] ON  PRIMARY 
( NAME = N'Society_security_database', FILENAME = N'C:Society_security_database.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Society_security_database_log', FILENAME = N'C:Society_security_database.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Society_security_database', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [Society_security_database].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [Society_security_database] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [Society_security_database] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [Society_security_database] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [Society_security_database] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [Society_security_database] SET ARITHABORT OFF 
GO
ALTER DATABASE [Society_security_database] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [Society_security_database] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [Society_security_database] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [Society_security_database] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [Society_security_database] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [Society_security_database] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [Society_security_database] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [Society_security_database] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [Society_security_database] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [Society_security_database] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [Society_security_database] SET  ENABLE_BROKER 
GO
ALTER DATABASE [Society_security_database] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [Society_security_database] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [Society_security_database] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [Society_security_database] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [Society_security_database] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [Society_security_database] SET  READ_WRITE 
GO
ALTER DATABASE [Society_security_database] SET RECOVERY SIMPLE 
GO
ALTER DATABASE [Society_security_database] SET  MULTI_USER 
GO
ALTER DATABASE [Society_security_database] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [Society_security_database] SET DB_CHAINING OFF 

终于找到了解决方案因为我正试图从数据库作为网络服务帐户进行访问。当我把它改成本地系统时,它起作用了!这是代码

Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer mc = new Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer();
                Microsoft.SqlServer.Management.Smo.Wmi.Service svc = mc.Services["MSSQL$SQLEXPRESS"];
                svc.SetServiceAccount("LocalSystem",null);
                svc.Alter();
                SqlConnection.ClearAllPools();

它将服务帐户更改为localSystem

我遇到了类似的问题。经过大量的分析,我找到了一个简单的解决方案。关闭Visual Studio。以管理员身份再次打开它,这应该会起作用。

希望能有所帮助。

相关内容

最新更新