Доступ к SQL Server из консольного приложения - PullRequest
2 голосов
/ 06 мая 2009

У меня есть простое консольное приложение, которое подключается к базе данных SQL Server. Однако он выдает следующую ошибку во время работы. Любые подсказки?

Unhandled Exception: System.Data.SqlClient.SqlException: Cannot open database "Database" requested by the login. The login failed.
Login failed for user 'MYDOMAIN\MYUSERID'.
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, BooleanignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)

Я использую SQL Server 2005 Express Edition. Однако я могу подключиться к SQL Server от разработчика Visual Web, используя Database Explorer. Код, который я использовал, приведен ниже:

using System;
using System.Data;
using System.Data.SqlClient;

    public class Test
    {
        public Test()
        {

        }
        static void Main()
        {
            Console.WriteLine("hello");
            string connectionString = "Data Source=localhost\\SQLEXPRESS;Database=Database;Integrated Security=true";
            SqlConnection conn = new SqlConnection(connectionString);
            conn.Open();
            Console.WriteLine("done");
        }
    }

Ответы [ 5 ]

3 голосов
/ 06 мая 2009

Консольные приложения могут свободно общаться с базами данных SQLExpress. Я ожидаю, что вам просто нужно настроить доступ к своей учетной записи домена через Management Studio . Предположительно, приложение веб-разработчика использует учетную запись ASPNET с другими учетными данными домена.

1 голос
/ 02 января 2014

Это значит, что у вашего логина нет прав доступа к базе данных !!!

1 голос
/ 15 мая 2012

Проверьте в app.config, в порядке ли пароль для атрибута "connectionstring".

У меня была та же проблема, что и у вас. И мой пароль был пуст. Я не знаю почему

0 голосов
/ 06 мая 2009

Полагаю, вы используете другой протокол между web-разработчиком и вашим .net-приложением. В качестве быстрого теста вы можете запустить Sql Server Configuration Manager и включить каждый протокол в конфигурации сети. Вы также можете проверить / изменить клиентские протоколы для собственного клиента sql в этом инструменте конфигурации. Они оба должны иметь общую память по умолчанию, но не помешает перепроверить.

С http://msdn.microsoft.com/en-us/library/ms345154.aspx:

Поддержка сети

Только тип подключения к общей памяти на локальной машине доступен по умолчанию для SQL Server Express, хотя пользователь может явно включить на других поддерживаемых протоколах, таких как TCP / IP и именованные каналы

Я предполагаю, что это локальная установка сервера sql, а не по сети, верно?

0 голосов
/ 06 мая 2009

Если вы работаете в Vista, это, вероятно, происходит потому, что Visual Web Developer работает под привилегированной учетной записью, например Администратор (чтобы вы могли разрабатывать и отлаживать ваши приложения). Администратор включен в группу администраторов на MSSQL. И ваше консольное приложение запускается под вашей учетной записью, у которой нет прав для подключения к MSSQL.

...