Не удается подключиться к SQL Server 2008 Express локально - PullRequest
1 голос
/ 08 декабря 2011

Я пытаюсь подключиться к локальному хосту sql server 2008 express server.Я также запускаю свой код c # asp.net локально (тестирование перед подключением к серверам разработки).Я не могу получить код для подключения к базе данных.Я скопировал строку подключения из свойств базы данных, созданной в Visual Studio 2010, и попытался использовать ее, но она не сработала.Тогда я использовал:

//Build the connection 
    SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();

    //Put your server or server\instance name here.  Likely YourComputerName\SQLExpress
    bldr.DataSource = "(localhost)/SQLEXPRESS;";

    //Attach DB Filename
    bldr.AttachDBFilename = "C:/Documents and Settings/1091912/My Documents/Visual Studio 2010/WebSites/BrokerBuy/App_Data/BrokerBuy.mdf";

    //User Instance
    bldr.UserInstance = true;

    //Whether or not a password is required.
    bldr.IntegratedSecurity = true;

    SqlConnection connectionString = new SqlConnection(bldr.ConnectionString);
    connectionString.Open();

Но это тоже не работает.Я также попробовал ./SQLEXPRESS для моего имени источника данных, но это также не сработало.Появляется ошибка:

"Ошибка сетевого или конкретного экземпляра произошла при установлении соединения с SQL Server. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляраправильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть подключение к SQL Server) "

Я также проверил, чтобы убедиться, что sqlсервер экспресс работает (он есть) и все соединения, кроме как через, включены.Я не могу подключиться к работе.Есть идеи?

Ответы [ 2 ]

4 голосов
/ 08 декабря 2011

Ваш источник данных неверен:

"(localhost) / SQLEXPRESS;";

Это должно быть (local)\SQLEXPRESS или localhost\SQLEXPRESS.Вы можете обратиться к этому MSDN Blog Post для получения дополнительной информации.Кроме того, традиционно это обратная косая черта, а не косая черта (поэтому убедитесь, что она экранирована, если вам нужно).

(local), включая скобки, это специальный индикатор, означающий локальную машину.

localhost - это имя сети для локального компьютера.

Вы можете использовать любое из них для подключения к локальному экземпляру.

1 голос
/ 08 декабря 2011

Есть несколько проблем с вашим кодом.

Первый - (localhost) - недействительный токен.Вы можете использовать (local) или, что еще лучше, просто ..

Во-вторых, ваш путь использует косые черты вместо обратных.Хотя более новые версии Windows поддерживают это для * NIX-совместимости, драйверы базы данных могут зависеть или не зависеть от того, как они анализируют путь внутренне.

Вот пример кода, который должен работать:

//Build the connection 
SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();

//Put your server or server\instance name here.  Likely YourComputerName\SQLExpress
bldr.DataSource = ".\\SQLEXPRESS";

//Attach DB Filename
bldr.AttachDBFilename = bldr.AttachDBFilename = @"C:\Documents and Settings\1091912\My Documents\Visual Studio 2010\WebSites\BrokerBuy\App_Data\BrokerBuy.mdf";

//User Instance
bldr.UserInstance = true;

//Whether or not a password is required.
bldr.IntegratedSecurity = true;

SqlConnection connectionString = new SqlConnection(bldr.ConnectionString);
connectionString.Open();
...