A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡文强 黑马帝   /  2012-1-6 17:26  /  2404 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡文强 于 2012-1-10 01:18 编辑

static void Main(string[] args)
        {
            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
                || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }
            SqlConnection conn = new SqlConnection(@"Data Source=20111226-1125;AttachDbFilename=|DataDirectory|\CallCenter.mdf;Integrated Security=True;User Instance=True");
            conn.Open();
            Console.WriteLine("打开数据库连接成功");
            Console.ReadKey();
        }

调试运行弹出警告“ 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭。
数据库打不开,请问我该怎么做?

Windows xp sp3
Microsoft Visual Studio 2010
Microsoft SQL 2008 Server Management (开发版)
服务器名:20111226-1125                                               

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

2 个回复

倒序浏览
经过到处找资料和自己的不断调试,我将问题自己解决了。
由于装的sql不是免费版的所以将“Data Source=20111226-1125;AttachDbFilename=|DataDirectory|\CallCenter.mdf;Integrated Security=True;User Instance=True”中的”user instance=true“删去。

接下来做插入语句的时候,第一次运行能成功,再次运行就提示出错。
  1. string dataDir = AppDomain.CurrentDomain.BaseDirectory;
  2.             if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
  3.             {
  4.                 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
  5.                 AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
  6.             }
  7.             using (SqlConnection conn = new SqlConnection(@"Data Source=20111226-1125;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;"))
  8.             {
  9.                 conn.Open();
  10.                 using (SqlCommand cmd = conn.CreateCommand())
  11.                 {
  12.                     cmd.CommandText = "insert into Mytable(name) values('god')";
  13.                     cmd.ExecuteNonQuery();
  14.                     Console.WriteLine("插入成功");
  15.                 }
  16.             }
  17.             Console.WriteLine("打开数据库连接成功");
  18.             Console.ReadKey();
复制代码
到处找原因,最后发现每运行一次后sqlserver management会打开调用的Database1.mdf数据库,要在vs中访问Database1.mdf就会提示“有程序占用不能访问。”,暂时的解决方法是在sqlserver management中把打开的Database1.mdf分离,就不会有问题了。

但这么做很麻烦,每次都要去分离一下,请问哪位有什么高招啊,请指点一下小菜鸟。
回复 使用道具 举报
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭。

原因:
<connectionStrings>
    <add connectionString="Data Source=.;AttachDbFilename=|DataDirectory|\Blog.mdf;Integrated Security=True;User Instance=True"
      providerName="System.Data.SqlClient" />
</connectionStrings>
中的红色部分User Instance=True;只有SQL Server Express版的支持

解决方法:
方法1:在连接属性的设置里边,点高级,将User Instance 设置为false,默认的true(我在数据库中没有找到相应的选项,使用的是第二种方法)
方法2:更改WEB.CONFIG中的连接字符串中的User Instance 为false即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马