не може да отвори потребителска база данни по подразбиране. грешка при неуспешно влизане

Получавам тази грешка „не мога да отворя потребителска база данни по подразбиране. Неуспешно влизане“. Това, което направих, беше да използвам ORM, за да създам DataContext, в кода първо извикам функцията TableExists, за да проверя дали version_tbl съществува, ако не, тогава извикайте скриптове за изпълнение на sql команди за създаване на version_tbl. След това създайте нов dataContext, но проблемът е след извикването, че получавам тази грешка в dataContext обект. Ако премахна извикването на TableExists, тогава създаването на dataContext е добре или преместя създаването на dataContext преди извикването на TableExists, но тогава проблемът възниква в извикването на TableExists, когато се опита да се свърже. Изглежда, че мога да се свържа само веднъж. Както и да е, мога да извикам TableExists, след което мога да създам dataContext?

По-долу е моят примерен код

static bool TableExists(string tableName) {

        using (SqlConnection connection = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=planning;Integrated Security=True"))
        {

            string checkTable =

               String.Format(

                  "IF OBJECT_ID('{0}', 'U') IS NOT NULL SELECT 'true' ELSE SELECT 'false'",

                  tableName);



            SqlCommand command = new SqlCommand(checkTable, connection);

            command.CommandType = CommandType.Text;

            connection.Open();

            bool retVal = Convert.ToBoolean(command.ExecuteScalar());                

            return retVal;

  }

}

myFunc ()
{
if (!TableExists ("version_tbl"))
{
// call scripts to create version_tbl
}

DataContext ctx = new DataContext ();

person queandans    schedule 23.10.2009    source източник


Отговори (3)


Преди всичко останало проверихте ли дали вашият потребител на домейн има подходящите DB rgihts? Опитайте първо да потвърдите връзката с DB.

person Shankar R10N    schedule 23.10.2009

Трябва да можете да отворите две връзки към базата данни едновременно: 1 чрез ADO.NET и 1 чрез LinqToSql.

Форматът на вашия код, както се показва от StackOverflow, е труден за четене, но изглежда, че се връщате от вашия метод TableExists, преди изразът using да може да затвори връзката. Има ли някаква разлика, ако промените това?

Получавате ли различни грешки в зависимост от реда на отваряне на връзките или винаги е една и съща грешка?

person Michael Maddox    schedule 24.10.2009
comment
Затварянето не прави разлика и със същата грешка System.Data.SqlClient.SqlException беше хванат Съобщение=Не може да се отвори потребителска база данни по подразбиране. Неуспешно влизане.\r\nНеуспешно влизане за потребител Източник=.Net SqlClient Data Provider ErrorCode=-2146232060 Клас=11 LineNumber=65536 Номер=4064 Процедура= Сървър=\\\\.\\pipe\\62547E80-CB39-45\ \tsql\\query State=1 - person queandans; 27.10.2009

Не спирайте с Изключението. Отидете в базата данни и проверете съобщението в дневника. Изключенията за LOGIN не са ясни нарочно от съображения за сигурност, но дневникът трябва да има по-добро обяснение на случилото се.

person Nestor    schedule 28.10.2009