2014-01-23 10 views
0

Основываясь на том, что я узнал here, я использую эту строку соединения:Почему мое соединение с локальным SQL-сервером не удается?

using (var conn = new SqlConnection(@"AttachDBFilename=C:\HoldingTank\AdventureWorksLT2012_Database\AdventureWorksLT2012_Data.MDF;Integrated Security=True;User Instance=true")) 

... к (попытке) прикрепляются к локальной БД SQL Server, но я получаю это исключение во время выполнения:

System.Data.SqlClient.SqlException was unhandled by user code 
    HResult=-2146232060 
    Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 
    Source=.Net SqlClient Data Provider 

Основываясь на моем унаследованной строке подключения MS Access, я был ранее также имел:

Provider=System.Data.SqlClient; 

до проведения "Attach DBFilename = ... ", но это вызвало исключение из своего собственного ...

ответ

2

В строке соединения отсутствует несколько значений. Вот один я недавно:

"Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

Я думаю, наиболее вероятным виновником является отсутствие значения «Initial Catalog».

1

Строка соединения, в которой вы нуждаетесь, будет зависеть от нескольких факторов, таких как выпуск SQL Server (LocalDB/Express/Standard), независимо от того, является ли это именованным экземпляром и тип проверки подлинности (SQL vs Integrated) у вас есть на месте.

Ответ от @zippit - хороший пример строки подключения для LocalDB с использованием интегрированной безопасности.

Та же строка на сервер SQL Express будет выглядеть следующим образом:

"Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

..и к стандартной версии Sql Server будет выглядеть следующим образом:

"Data Source=serverNameOrIpAddress\sqlepxress;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

..и в именованный экземпляр на стандартной версии Sql Server будет выглядеть так:

"Data Source=serverNameOrIpAddress\instanceName;AttachDbFilename=|DataDirectory|\mydbname.mdf;Initial Catalog=mydbname;Integrated Security=True" 

Все те, кто предполагает inte тертированная аутентификация. Если вы настроили аутентификацию в sql, вы замените «Integrated Security = True» на «User Id = username; Password = pword;»

Кроме того, если сервер SQL находится на той же машине, вы можете использовать это для параметра источника данных для SQL Express

.\sqlexpress 

..и это для стандартного Sql Server

(local) 

Вот сайт, который я нашел полезным: Connection Strings

+0

«Ответ от B. Clay Shannon - хороший пример строки подключения для LocalDB с использованием интегрированной безопасности». Б. Клей Шеннон - кошка, которая поставила вопрос. –

+0

Хорошая ссылка! Теперь это работает: Источник данных = (LocalDb) \ v11.0; AttachDBFilename = C: \ HoldingTank \ AdventureWorksLT2012_Database \ AdventureWorksLT2012_Data.MDF; Integrated Security = True; " –

+1

Да, извините за неправильную ссылку. Кредит принадлежит @Zippit; Я отредактировал свой ответ. Рад, что вы его работали. – agileMike

Смежные вопросы