【问题标题】:SQL error Access Denied when connecting to db from VS从 VS 连接到 db 时 SQL 错误访问被拒绝
【发布时间】:2019-10-25 03:23:14
【问题描述】:

我在我的 SQLEXPRESS 实例中设置了一个数据库 (QCDB)。我添加了一个在服务器级别启用了 serveradmin、sysadmin 和公共服务器角色的用户 (QCast)。用户在 db 级别具有 db_owner 角色。但是在 VS 中使用以下命令连接到数据库时   

string strConn = "Data Source=STA15-DT-ADM\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL14.SQLEXPRESS\\MSSQL\\DATA\\QCDB.mdf;User Id=QCast;Password=QC@st;   Connect Timeout=30";


SqlConnection con = new SqlConnection(strConn);
string dbget = "SELECT WOnum WOstatus FROM WOdetail";
SqlCommand cmd = new SqlCommand(dbget, con);
con.Open();
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("Results");
ad.Fill(dt);
WOgrid.ItemsSource = dt.DefaultView;
cmd.Dispose();
con.Close();     

我收到以下错误

System.Data.SqlClient.SqlException: '无法打开物理文件“C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\QCDB.mdf”。操作系统错误 5:“5(拒绝访问。)”。尝试为文件 C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\QCDB.mdf 附加自动命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。'

不知道我做错了什么。

【问题讨论】:

  • 某个进程已经打开了文件。也许该文件已经加载到 SQL Express 中? (Local DB,按需加载数据库的模式,一般不兼容在其他工具中打开文件,包括VS,同时在应用程序中使用。(这就是为什么我坚持使用完整的SQL Server,在开发者版中。)
  • 不能是我在同一个目录中打开了另一个数据库的位置
  • 如何检查进程是否打开了文件?我已经从 SQL Mgmt Studio 中分离了数据库
  • Sys Internals 有handles 和 Process Explorer,两者都可以找到所有带有文件句柄的进程(后者更容易使用它的查找功能)。
  • Process Explorer 干涸了

标签: sql wpf visual-studio


【解决方案1】:

我在谷歌之后得到了这个

我简化了连接字符串,它马上就起飞了。不知道为什么。

 string strConn = ("Data source = [Server Name]; Initial catalog = [db name]; User id = XXXX; password = XXXX");

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2017-01-12
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多