не может открыть базу данных пользователя по умолчанию. ошибка входа в систему - PullRequest
0 голосов
/ 23 октября 2009

Я получаю сообщение об ошибке «Не удается открыть базу данных пользователя по умолчанию. Ошибка входа». Я использовал ORM для создания DataContext, в коде сначала вызывается функция TableExists, чтобы проверить, существует ли version_tbl, если нет, то вызывает сценарии для выполнения команд sql для создания version_tbl. Затем создайте новый dataContext, но проблема в том, что после вызова я получаю эту ошибку на объекте dataContext. Если я удаляю вызов TableExists, то создание dataContext в порядке или переносит создание dataContext до вызова TableExists, но тогда проблема возникает в вызове TableExists при попытке подключения. Похоже, я могу подключиться только один раз. В любом случае я могу вызвать TableExists, а затем создать dataContext?

Ниже приведен пример кода

static bool TableExists (строка 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 ();

Ответы [ 3 ]

0 голосов
/ 24 октября 2009

Вы должны иметь возможность одновременно открыть два соединения с базой данных: 1 через ADO.NET и 1 через LinqToSql.

Формат вашего кода, отображаемый в StackOverflow, трудно прочитать, но, похоже, вы возвращаетесь из метода TableExists до того, как оператор using сможет закрыть соединение. Имеет ли какое-то значение, если вы измените это?

Вы получаете разные ошибки в зависимости от того, в каком порядке вы открываете соединения, или это всегда одна и та же ошибка?

0 голосов
/ 28 октября 2009

Не останавливайтесь на Исключении. Зайдите в базу данных и проверьте сообщение в журнале. Исключения для входа в систему не совсем понятны по соображениям безопасности, но в журнале должно быть лучшее объяснение произошедшего.

0 голосов
/ 23 октября 2009

Прежде всего вы проверяли, есть ли у пользователя вашего домена соответствующие базы данных? Попробуйте сначала проверить соединение с БД.

...