1с не удается открыть базу данных запрашиваемую именем входа
Я создаю базу данных с помощью объекты управления SQL Server.
я написал следующий метод для создания базы данных:
вскоре после этого я вызываю другой метод для выполнения сценария SQL для создания таблиц и т. д.:
заявление server.ConnectionContext.ExecuteNonQuery(createDatabaseObjectsScript) бросает!--3--> С не удается открыть базу данных "имя базы данных", запрашиваемую именем входа. Ошибка входа в систему. Ошибка входа пользователя в пользователь".
если я попытаюсь пройти через операторы в отладчике, это исключение никогда происходит и скрипт выполняется нормально.
Я только предполагаю, что серверу нужно некоторое время для инициализации базы данных, прежде чем ее можно будет открыть. Это точно? Есть ли способ узнать, готова ли база данных, кроме попыток и неудачного подключения?
Edit: я должен упомянуть, что база данных определенно создан во всех случаях.
Edit 2: перед созданием базы данных, я называю
база данных, которая только что вышла в интернет, не обязательно готова принимать соединения. Чтобы определить, когда база данных может принимать соединения, запросите столбец collation_name в sys.базы данных или свойство сортировки DATABASEPROPERTYEX. База данных может принимать подключения, если параметры сортировки базы данных возвращают ненулевое значение.
имя базы данных", запрашиваемую именем входа. Ошибка входа в систему. Ошибка входа пользователя 'Пользователь'
в моем случае оказалось, что проблема не в том, что вновь созданную базу данных не готова. Но проблема была в том, что SqlConnection.Open() по-видимому, использовал неудачное кэшированное соединение, которое затем просто вернуло ту же ошибку снова.
когда я вызываю static SqlConnection.ClearAllPools() метод прежде чем я попытаюсь открыть вновь созданную базу данных, она работает нормально!
см. также этой вопрос.
вы должны подойти к созданию базы данных немного отличается. Приведенный ниже код правильно обрабатывает создание базы данных. Попробуйте ;)
Установлен Ms sql 2012 и 1с 8.2. При попытке создания новой базы из консоли администрирования выходит ошибка "sql недопустимая строка соединения (87)". Кто знает подскажите в чем может быть проблема?
Строку соединения как увидеть?(если полное описание ошибки, сделать скрин пока нет возможности) Сервер тот же где 1с и sql. Название базы- 7 латинских букв.
Имя сервера базы данных пишите без имени экземпляра SQL т.е. просто имя сервера или его ip.
Пользователь БД в вашем случае это не пользователь от которого запускается служба сервера 1с, а пользователь с админскими правами в MS SQL. Обычно это пользователь sa.
Если SQL у вас использует авторизацию от системы - включите авторизацию средствами SQL.
Зайдите в menagment studio, авторизируйтесь. откройте свойства сервера и если не ошибаюсь на вкладке "безопасность" включите использование авторизации sql. Далее идите в раздел безопасность - имена входа и задайте пароль для пользователя sa и при создании базы используйте этого пользователя.
Ну, вместо пользователя sa на самом SQL сервере вполне можно пользовать пользователя 1cv82 (если конечно его предварительно создать, и естественно включить авторизацию силами SQL).
А у вас сам SQL установлен на компьютере ServerAD ? и сам экземпляр называется MSSQLSERVER? Лично я указываю и имя компьютера и имя экземпляра (они у меня совпадают, поэтому получается sql1\sql1)
Но у меня подозрение что автор пытается подконнектиться не к тому серверу к которому хотел.
Победили проблему или нет? Если победили, то как?
Столкнулся сегодня с такой-же и ничего не получается сделать.
1С 8.2.19.106 + MS SQL 2014
ощущение что 1Ска неверное строку подключения к SQL-серверу генерирует
может есть какие-то параметры при запуске 1С сервера для корректировки?
Пробовали создать новую пустую базу в Enterprise Manager, настроить ее в консоли администрирования сервера 1С, а затем уже в ней создать базу?
Пользователю, под которым сервер предприятия подключается к SQL, дали права dbowner на новую базу, или он у Вас подключается под sa ?
(15) v3rter, подключение под sa проверяю.
Это чисто для тестов компьютер, так что там все под админом делаю
Базу сам создавать не пробовал, проверю
Есть еще одна подводная грабля - авторизация самого sql-сервера: смешанная авторизация (mixed mode) включена?
и брандмауэр отключал и касперского отключал и в касперском порт прописывал, который в настройках протоколов SQL прописан
в SQL смешанная авторизация стоит
когда спецом пишешь в настройках базы неверное имя SQL сервера или неверное имя пользователя, то ошибки совсем другие выдает.
А когда все правильно, то ошибка как на скрине один в один.
и еще забыл написать, операционка Windows-8.1 64x
на другом компе с Windows-7 все работает - та-же версия 1С и SQL, тот-же Касперский
Попробую еще SQL переустановить с другими параметрами
"Вншение соединения" в "Настройке контактной зоны MS SQL Server" разрешены? Явно указывать порт подключения через двоеточие пробовали?
(21) VZhulanov, гуглится же )
Номер порта пишется через двоеточие после имени SQL-сервера. Имеется в виду порт сервера 1С предприятия MYSQLSERVER:1541
Не удается открыть базу данных «организации_MSCRM» запрашиваемую именем входа.
Ошибка входа в систему. Ошибка входа пользователя «NT AUTHORITY\NETWORK SERVICE».
Ошибка сервера в '/' приложении.
Не удается открыть базу данных «MSCRM_CONFIG», запрашиваемую именем входа. Ошибка входа в систему.
Ошибка входа пользователя "домена\CRMServer$".
Описание: Во время выполнения текущего веб-запроса произошло необработанное исключение. Просмотрите трассировку стека для получения дополнительных сведений об этой ошибке и месту ее возникновения в коде.
Сведения об исключении: System.Data.SqlClient.SqlException: не удается открыть базу данных «MSCRM_CONFIG», запрашиваемую именем входа. Ошибка входа в систему. Ошибка входа пользователя "домена\CRMServer$".
Необработанное исключение во время выполнения текущего веб-запроса. Сведения о происхождении и месте возникновения исключения, можно определить, используя следующую трассировку стека исключений.
[SqlException (0x80131904): не удается открыть базу данных «MSCRM_CONFIG», запрашиваемую именем входа. Ошибка входа в систему.
Ошибка входа пользователя "домена\CRMServer$".]
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +437
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) + 82
System.Data.ProviderBase.DbConnectionClosed.OpenConnection (с базой данных, определенные outerConnection, DbConnectionFactory connectionFactory) +105
Microsoft.Crm.SharedDatabase.DatabaseMetadata.LoadMetadataXmlFromDatabase (тип подключения CrmDBConnectionType, String connectionString, Int32 & maxBlobSize) + 125
Microsoft.Crm.SharedDatabase.DatabaseMetadata.LoadCacheFromDatabase (тип подключения CrmDBConnectionType, строка connectionString) + 65
Microsoft.Crm.SharedDatabase.DatabaseService.Initialize(String tableName) +53
Microsoft.Crm.SharedDatabase.DatabaseService.Retrieve (строка tableName, строковых столбцов [], условия [] PropertyBag) +109
Microsoft.Crm.ServerLocatorService.GetSiteSetting(String settingName) + 82
Microsoft.Crm.LocatorService.GetSiteSetting(String settingName) + 35
Причина
Эта проблема возникает, если один или нескольких из следующих условий:
Установите Microsoft Dynamics CRM в многосерверной среде. Затем установить Microsoft Dynamics CRM непосредственно на сервере, на котором выполняется Microsoft SQL Server. Тем не менее некоторые разрешения SQL Server не устанавливаются.
На сервере Microsoft Dynamics CRM не добавляется в группу «SQLAccessGroup» в службе каталогов Active Directory.
Решение
Чтобы устранить эту проблему, используйте один или несколько из указанных ниже способов.
Способ 1
Настройка учетной записи NT AUTHORITY\NETWORK SERVICE, как SQL Server пользователь, имеющий доступ к базам данных Microsoft Dynamics CRM. Чтобы сделать это, выполните следующие действия.
Для входа в SQL Server Management Studio, нажмите кнопку ОК.
В обозревателе объектов разверните узел базы данных, разверните базу данных _MSCRM организации и раскройте безопасности.
Щелкните правой кнопкой мыши пользователейи выберите команду Новый пользователь.
В диалоговом окне Пользователь базы данных — создать введите NT AUTHORITY\NETWORK SERVICE в следующих полях:
В поле имя пользователя
В поле имя входа
В области членство в роли базы данных установите флажок db_owner и нажмите кнопку ОК.
Способ 2
Добавьте сервер Microsoft Dynamics CRM в группу SQLAccessGroup в Active Directory. Чтобы сделать это, выполните следующие действия.
Щелкните организационное подразделение, в котором можно установить Microsoft Dynamics CRM.
Дважды щелкните SQLAccessGroup.
В диалоговом окне SQLAccessGroup нажмите кнопку членов, нажмите кнопку Добавить, нажмите кнопку Типы объектов, установите флажок компьютеры и нажмите кнопку ОК.
В поле Введите имена выбираемых объектов введите имя сервера Microsoft Dynamics CRM и нажмите кнопку Проверить имена.
Убедитесь, что имя сервера Microsoft Dynamics CRM в поле Введите имена объектов для выбора доступен, а затем два раза нажмите кнопку ОК .
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Workgroup Edition Microsoft SQL Server 2005 Express Edition SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core SQL Server 2014 Developer SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Enterprise SQL Server 2014 Express SQL Server 2014 Express SQL Server 2014 Standard SQL Server 2014 Standard SQL Server 2014 Web SQL Server 2014 Web SQL Server 2016 Standard SQL Server 2016 Enterprise Core SQL Server 2016 Developer SQL Server 2016 Enterprise SQL Server 2017 on Windows (all editions) Еще. Меньше
Симптомы
Не удается открыть базу данных пользователя по умолчанию
Причина
Во время подключения к базе данных пользователя по умолчанию недоступна. Возможно, база данных:
Находится в подозрительном режиме.
Больше не существует.
Находится в однопользовательском режиме и единственным доступным подключение уже используется кем-то или что-нибудь еще.
Был установлен в состояние RESTRICTED_USER.
Находится в автономном режиме.
Устанавливается в аварийном состоянии.
Не имеют учетной записи входа сопоставлено с пользователем, или пользователь не обладает правами доступа.
Является частью зеркальной базы данных.
Кроме того учетная запись может быть членом нескольких групп, и базу данных по умолчанию для одной из этих групп недоступен во время подключения.
Временное решение
Для временного решения этой проблемы укажите допустимый, доступные базы данных в строке подключения. Чтобы избежать ошибки, когда недоступна база данных пользователя по умолчанию, войдите в систему как пользователь, можно изменить имена входа. Измените базу данных пользователя по умолчанию для базы данных, которая в настоящее время доступна для подключения.
SQL Server 2005 и более поздних версий
Чтобы изменить базу данных по умолчанию в SQL Server 2005 можно использовать программу sqlcmd. Чтобы сделать это, выполните следующие действия.
Воспользуйтесь одним из следующих способов, в зависимости от вида проверки подлинности с использованием имени входа SQL Server.
Если имя входа SQL Server использует проверку подлинности Microsoft Windows для подключения к экземпляру, введите в командной строке следующую команду и нажмите клавишу ВВОД:
главный sqlcmd E -S d имя_экземпляра
Если имя входа SQL Server используется проверка подлинности SQL Server для подключения к экземпляру, введите в командной строке следующую команду и нажмите клавишу ВВОД:
главные sqlcmd -S имя_экземпляра -d - U SQLLogin -P пароль
Примечание. Имя_экземпляра — это имя экземпляра SQL Server 2005, к которой вы подключаетесь. SQLLogin — местозаполнитель для имени входа SQL Server, база данных по умолчанию которого была удалена. Пароль — это пароль для имени входа SQL Server.
В командной строке sqlcmd, введите следующую команду и нажмите клавишу ВВОД:
ALTER LOGIN SQLLogin with DEFAULT_DATABASE = AvailDBNameПримечание. AvailDBName — это имя существующей базы данных, которая может осуществляться путем входа в экземпляре SQL Server.
В командной строке sqlcmd введите GOи нажмите клавишу ВВОД.
SQL Server 2000 и SQL Server 7.0
Чтобы изменить базу данных по умолчанию в SQL Server 2000 и SQL Server 7.0, можно использовать программу osql. Чтобы сделать это, выполните следующие действия.
В командной строке введите следующую команду и нажмите клавишу ВВОД:
C:\ > osql -E -d образца
В командной строке программы osql введите следующую команду и нажмите клавишу ВВОД:
1 > sp_defaultdb "пользователь «s_login», «Главная»
Во второй строке введите следующую команду и нажмите клавишу ВВОД:
Статус
Данное поведение является особенностью.
Дополнительные сведения
И наоборот получать ответы, следующим из различных клиентских средств SQL Server при недоступности базы данных:
SQL Server Management Studio (SQL Server 2005)
Не удается подключиться к имя_сервера
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:
Не удается открыть базу данных пользователя по умолчанию. Ошибка входа. Ошибка входа пользователя «имя пользователя». (Microsoft SQL Server, ошибка: 4064)
В SQL Server 2005 с помощью программы Sqlcmd
Анализатор запросов SQL Server 2000 (QA)
SQL Server 2000 Server Enterprise Manager (SEM)
Не удалось подключиться к TESTSERVER - не удается открыть базу данных пользователя по умолчанию «dbid». Вместо этого с помощью базы данных master.
Убедитесь, что запущен SQL Server и проверьте свойства регистрации SQL Server (щелкнув правой кнопкой мыши на узле TESTSERVER) и повторите попытку.
Из командной строки с помощью программы OSQL SQL Server 2000
Не удается открыть базу данных пользователя по умолчанию. Ошибка входа.
Анализатор запросов SQL Server 7.0 (QA)
Из командной строки с помощью программы OSQL SQL Server 7.0
Не удается открыть базу данных пользователя по умолчанию «dbid».
Вместо этого с помощью базы данных master.
Следующая таблица предоставляет дополнительные сведения о продуктах и средства, которые автоматически проверки данного условия на экземпляр SQL Server и на версиях продукта SQL Server, для которой проверяется правило.
Версии продуктов, для которых вычисляется правило
Советник по System Center
Участников уровня сервера SQL Server с базой данных по умолчанию отсутствует
System Center ядра СУБД проверяет, если имена входа в экземпляре SQL Server настроены по умолчанию базы данных, которая больше не существует. Просмотрите подробности, которые приведены в разделе сбор информации оповещения ядра СУБД и выполните действия, описанные в этой статье, чтобы устранить проблему.
Дополнительные сведения, возвращаемые клиенту, включают в себя следующее:
"Ошибка входа пользователя . (.Net SqlClient Data Provider)"
"Номер ошибки: 18456"
"Номер строки: 65536"
Дополнительные сведения об ошибке
Состояние | Описание |
---|---|
1 | Сведения об ошибке недоступны. Это состояние обычно означает отсутствие разрешений на получение сведений об ошибке. За дополнительными сведениями обратитесь к администратору SQL Server. |
2 | Недопустимый идентификатор пользователя. |
5 | Недопустимый идентификатор пользователя. |
6 | Предпринята попытка использовать имя входа Windows при использовании проверки подлинности SQL Server. |
7 | Имя входа отключено, и пароль неверный. |
8 | Пароль неверный. |
9 | Недопустимый пароль. |
11 | Допустимое имя входа, но доступ к серверу не удался. Одна из возможных причин этой ошибки: пользователь Windows имеет доступ к SQL Server в качестве члена группы локальных администраторов, но Windows не предоставляет учетные данные администратора. Чтобы установить соединение, запустите программу подключения от имени администратора, а затем добавьте имя пользователя Windows в SQL Server в качестве определенного имени входа. |
12 | Допустимое имя входа, но доступ к серверу не удался. |
18 | Пароль должен быть изменен. |
38, 46 | Не удалось найти запрошенную пользователем базу данных. |
58 | Если SQL Server настроен на использование только проверки подлинности Windows, а клиент пытается выполнить вход с использованием проверки подлинности SQL. Другая причина — несовпадение идентификаторов безопасности. |
102–111 | Ошибка AAD. |
122–124 | Сбой из-за пустого имени пользователя или пароля. |
126 | Запрошенная пользователем база данных не существует. |
132–133 | Ошибка AAD. |
Есть другие коды ошибок, которые означают непредвиденные внутренние ошибки обработки.
Еще одна, менее распространенная, возможная причина
Когда на сервере настроена проверка подлинности в смешанном режиме, подключение ODBC использует протокол TCP, а подключение не указывает явно, что оно должно быть доверительным.
Когда на сервере настроена проверка подлинности в смешанном режиме, подключение ODBC использует именованные каналы, учетные данные, которые клиент использовал для открытия именованного канала, используются для автоматического олицетворения пользователя, а подключение не указывает явно, что оно должно быть доверительным.
Чтобы решить эту проблему, включите в строку подключения параметр TRUSTED_CONNECTION = TRUE.
Примеры
В этом примере состояние ошибки проверки подлинности равно 8. Это означает, что пароль неверный.
Если SQL Server устанавливается в режиме аутентификации Windows, а затем переключается на аутентификацию SQL Server и Windows, то имя входа sa будет по умолчанию отключено. Это приводит к ошибке с состоянием 7: "Ошибка входа для пользователя sa". Чтобы включить имя для входа sa, выполните инструкции из статьи об изменении режима проверки подлинности сервера.
Действие пользователя
При попытке подключения с использованием проверки подлинности SQL Server убедитесь, что SQL Server настроен в режиме смешанной проверки подлинности. Дополнительные сведения см. в статье Изменение режима проверки подлинности сервера.
При попытке подключения с использованием проверки подлинности SQL Server убедитесь, что имя входа SQL Server существует и введено верно.
При попытке подключения с использованием проверки подлинности Windows убедитесь, что выполнен правильный вход в нужный домен.
Если ошибка указывает состояние 1, обратитесь к администратору SQL Server.
Для подключения с учетными данными администратора запустите приложение от имени администратора. После подключения добавьте пользователя Windows в качестве отдельного имени входа.
Если компонент Компонент Database Engine поддерживает автономные базы данных, подтвердите, что имя входа не удалено после преобразования в пользователя автономной базы данных.
Читайте также: