SqlDependency.Start尝试为文件附加自动命名的数据库失败

时间:2011-09-24 17:11:02

标签: c# asp.net sql sqlcachedependency

我在我的App_Data文件夹中获得了NORTHWND.mdf和NORTHWND.LOG的副本

我的连接线:

   <add name="northwind_connection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|NORTHWND.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

当我尝试打开和关闭连接时,一切正常。

  string connStr = WebConfigurationManager.ConnectionStrings["northwind_connection"].ToString();            
  SqlConnection conn = new SqlConnection(connStr);            
  SqlCommand command = new SqlCommand("Select * From Products");
  command.Connection = conn;                
  conn.Open();
  SqlDataReader reader = command.ExecuteReader();            
  GridView1.DataSource = reader;
  GridView1.DataBind();
  conn.Close();

现在在此代码旁边,我想将SqlCacheDependency添加到页面中 当我放置代码时:Shown in msdn

     SqlDependency.Start(connStr);

我得到以下错误:

尝试为文件C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ NORTHWND.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。

为什么会发生这种情况的任何想法,我需要为SqlCacheDependency配置什么才能工作。

提前谢谢 叶兰。

另外我想补充一点,如果我将我的连接字符串更改为特定的

  <add name="northwind_connection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\NORTHWND.MDF; Integrated Security=True" providerName="System.Data.SqlClient" />

一切正常,但这似乎是错误的,因为我不希望用户将连接字符串更改为其路径,这就是为什么我想把它放在App_Data中 或者在列表中给出。\ SQLEXPRESS的相对路径 这也行不通:

  <add name="myConnection"  connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=NORTHWND;Integrated Security=True;" providerName="System.Data.SqlClient"/>

请详细说明这个问题,必须有一些配置才能实现这一目标。 提前致谢。 伊兰。

1 个答案:

答案 0 :(得分:1)

我认为您不能将SqlCacheDependencyauto-attach (SQLEXPRESS)类型的连接字符串一起使用。

您需要在Management studio中附加数据库,并将连接字符串更改为:

server=(local);database=Northwind;Integrated Security=SSPI;

然后你需要执行ALTER DATABASE NORTHWIND SET ENABLE_BROKER

如果您需要为用户提供此类设置,那么您可以编写一个SQL脚本来为它们执行此操作。