SqlDependency.Start Попытка присоединить базу данных с автоматическим именем для файла не удалась - PullRequest
1 голос
/ 24 сентября 2011

у меня есть копия NORTHWND.mdf вместе с NORTHWND.LOG в моей папке App_Data

МОЯ СТРОКА СОЕДИНЕНИЯ:

   <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 на страницу когда я размещаю код: Показано в 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 Ответ

1 голос
/ 24 сентября 2011

Не думаю, что вы можете использовать SqlCacheDependency со строкой подключения типа auto-attach (SQLEXPRESS).

Вам необходимо присоединить базу данных в Management studio и изменить строку подключения, чтобы она выглядела следующим образом:

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

Тогда вам нужно выполнить ALTER DATABASE NORTHWIND SET ENABLE_BROKER

Если вам нужно предоставить такую ​​настройку для пользователей, вы можете написать сценарий SQL, который сделает это для них.

...