我的数据库文件是用VisualStudio2005里面的SQLExpress创建的,本机安装了SQL2005,但是我不想将数据库文件附加到数据库中然后使用,我只想连接数据库文件使用。
连接字符串如下:
  
<connectionStrings>
    <add name="sqlstr" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\WebQQ.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
调用代码如下:            str = System.Configuration.ConfigurationManager.ConnectionStrings["sqlstr"].ToString();
            Con = new SqlConnection(str);
            SqlDataReader Reader;
            if (Con.State != ConnectionState.Open)
                Con.Open();//打开数据库连接                           //!!!这行出错
            search="select * from UserList where UserName=" + TextBox1.Text + " and Password=" + TextBox2.Text;
            SqlCommand Com = new SqlCommand(search, Con);
            Reader = Com.ExecuteReader();//执行sql语句然后在VS2005里面测试能连接到数据库文件并得到数据,但是在IIS中架好之后却在Con.Open()这行出错,错误信息如下:
“/”应用程序中的服务器错误。
无法打开用户默认数据库。登录失败。
用户 'NT AUTHORITY\SYSTEM' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.Data.SqlClient.SqlException: 无法打开用户默认数据库。登录失败。
用户 'NT AUTHORITY\SYSTEM' 登录失败。源错误:行 23:             SqlDataReader Reader;
行 24:             if (Con.State != ConnectionState.Open)
行 25:                 Con.Open();//打开数据库连接
行 26:             SqlCommand Com = new SqlCommand(search, Con);
行 27:             Reader = Com.ExecuteReader();//执行sql语句
源文件: f:\Asp.net Project\WebQQ\App_Code\Sql.cs    行: 25堆栈跟踪:[SqlException (0x80131904): 无法打开用户默认数据库。登录失败。
用户 'NT AUTHORITY\SYSTEM' 登录失败。]
求能否指点下如何用SQLExpress连接数据库文件.mdf在IIS中不出现权限问题。

解决方案 »

  1.   

    问题很明显,是账户不正确。为数据库配置SYSTEM账户。
      

  2.   

    但是我的那个数据库根本就没有附加到数据库里面去,怎么去做这种设置呢?数据库管理工具里面根本就没有这个数据库的项目。是直接连接的数据库文件WebQQ.mdf。
      

  3.   

    数据库添加NT AUTHORITY\SYSTEM用户
    登录名(选择'NT AUTHORITY\SYSTEM' )>然后选择对应的角色成员
      

  4.   

    我的XXXX-PC\SQLEXPRESS服务器上本来就有NT AUTHORITY\SYSTEM这个用户,初始的服务器角色只有sysadmin
    然后我给了他所有的服务器角色,但是试了下,还是一样的错误。
      

  5.   

    是不是Sql配置的不允许用户实例?
      

  6.   

    怎么样配置让他允许用户实例呢?刚接触ASP.NET没多久,不太懂,麻烦指点。
      

  7.   

    在 SQL Server Management Studio 数据库-安全性里面添加。
      

  8.   

    我刚才突然发现,如果我不用VS2005打开我那个项目的话,直接访问IIS架设的网站,就正常,然后如果我先访问IIS架设的这个网站后,再在VS2005里面去调试就会报错,说什么无法连接,该文件正在被其他程序访问。
    也就是说,如果我的VS2005和IIS不能同时访问这个数据库文件。
    我就想再问下,有没有办法,能够让他们两个可以一起访问?