Verification: a143cc29221c9be0

Php can not select database

Php can not select database

Сообщения о временных ошибках (40197, 40613 и др.)

Инфраструктура Azure способна динамически изменять конфигурацию серверов при высокой рабочей нагрузке на службу баз данных SQL. Такое динамическое поведение может привести к разрыву подключения между клиентской программой и базой данных или экземпляром. Такое состояние называется временной ошибкой. События перенастройки базы данных обычно происходят в запланированном случае (например, при обновлении программного обеспечения) или в незапланированном случае (например, при сбое процесса или балансировке нагрузки). Большей частью события перенастройки кратковременные и должны завершаться в течение 60 секунд максимум. Тем не менее завершение этих событий иногда может занимать больше времени, например когда большая транзакция приводит к длительному восстановлению. В следующей таблице перечислены различные временные ошибки, которые могут отображаться в приложениях при подключении к Базе данных SQL

Список кодов ошибок для временных сбоев

Код ошибки Статус Описание
4060 16 Невозможно открыть базу данных %.*ls, запрашиваемую именем входа. Сбой при входе. Дополнительные сведения см. в разделе Ошибки с 4000 по 4999
40197 17 При обработке вашего запроса служба обнаружила ошибку. Повторите попытку. Код ошибки: %d.

Эта ошибка возникает, если служба не работает по причине обновления программного или аппаратного обеспечения, аппаратных ошибок или проблем при отработке отказа. Код ошибки (%d), указанный в сообщении об ошибке 40197, содержит дополнительные сведения о характере сбоя или отработки отказа. В сообщении об ошибке 40197 может быть указан код ошибки 40020, 40143, 40166 или 40540.

При повторном подключении происходит автоматическое подключение к рабочей копии базы данных. Приложение должно зафиксировать ошибку 40197, зарегистрировать указанный в сообщении код ошибки (%d) для устранения неполадок и повторять попытки подключения к базе данных SQL, пока не появится доступ к ресурсам, а подключение не будет восстановлено. Дополнительные сведения см. в разделе Временные ошибки.

40501 20 Служба занята. Повторите запрос через 10 секунд. Идентификатор инцидента: %ls. Код: %d. Дополнительные сведения см. в разделе:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.
40613 17 База данных %.*ls на сервере %.*ls в данный момент недоступна. Повторите попытку подключения позже. Если проблема повторится, обратитесь в службу поддержки пользователей и сообщите идентификатор трассировки сеанса %.*ls.

Эта ошибка может возникать в том случае, если с базой данных уже установлено выделенное административное соединение (DAC). Дополнительные сведения см. в разделе Временные ошибки.

49918 16 Не удается обработать запрос. Недостаточно ресурсов для обработки запроса.

Служба занята. Повторите запрос позже. Дополнительные сведения см. в разделе:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.

49919 16 Невозможно обработать запрос на создание или обновление. Для подписки "%ld" выполняется слишком много операций создания или обновления.

Служба занята обработкой нескольких запросов на создание или обновление для вашей подписки или сервера. В данный момент запросы блокируются для оптимизации ресурсов. Выполните запрос sys.dm_operation_status для ожидающих операций. Подождите, пока выполнятся ожидающие запросы на создание или обновление, либо удалите один из ожидающих запросов и повторите свой запрос позже. Дополнительные сведения см. в разделе:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.

49920 16 Не удается обработать запрос. Для подписки «%ld» выполняется слишком много операций.

Служба занята обработкой нескольких запросов для этой подписки. В данный момент запросы блокируются для оптимизации ресурсов. Выполните запрос sys.dm_operation_status для состояния операции. Подождите, пока выполнятся ожидающие запросы, либо удалите один из ожидающих запросов и повторите свой запрос позже. Дополнительные сведения см. в разделе:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.

4221 16 Произошел сбой при входе в базу данных-получатель для чтения из-за длительного ожидания выполнения HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING. Вход в реплику невозможен, так как отсутствуют версии строк для транзакций, которые выполнялись при перезапуске реплики. Чтобы устранить проблему, откатите реплику или зафиксируйте активные транзакции в первичной реплике. Большинство таких случаев можно избежать, если не выполнять длительные транзакции записи в базе данных-источнике.

Порядок устранения временных проблем подключения

  1. Проверьте панель мониторинга служб Microsoft Azure на наличие каких-либо известных сбоев, произошедших в то время, когда приложение сообщало об ошибках.
  2. Приложения, подключающиеся к облачной службе, такой как база данных SQL Azure, должны ожидать периодические события перенастройки и реализовывать логику повторов для обработки этих ошибок, а не отображать ошибки приложения пользователям.
  3. Если база данных близка к исчерпанию доступных ресурсов, может возникать временная проблема подключения. Дополнительные сведения см. в статье Обзор ограничений ресурсов базы данных SQL Azure.
  4. Если проблемы подключения остаются или интервал, во время которого приложение обнаруживает ошибку, превышает 60 секунд, а также если в определенный день такая ошибка возникает многократно, зарегистрируйте запрос на поддержку Azure, нажав Получить поддержку на сайте Поддержка Azure .

Реализация логики повторов

Настоятельно рекомендуем включить в клиентской программе логику повторных попыток, чтобы программа смогла восстановить подключение после определенного периода, позволяющего временной ошибке самоустраниться. Рекомендуется подождать 5 секунд, прежде чем выполнять первую повторную попытку. Повторная попытка после ожидания менее 5 секунд может привести к перегрузке облачной службы. Для каждой последующей повторной попытки ожидание должно увеличиваться экспоненциально, но не более чем до 60 секунд.

Примеры кода с логикой повторных попыток см. в следующих статьях:

  • Выполнение устойчивого подключения к SQL с помощью ADO.NET
  • Выполнение устойчивого подключения к SQL с помощью PHP

Дополнительные сведения об обработке временных ошибок в приложении см. в статье Устранение временных ошибок подключения к базе данных SQL

Обсуждение периода блокировки для клиентов, которые используют ADO.NET, см. в статье Организация пулов соединений (ADO.NET).

Эта проблема возникает в том случае, если приложению не удается подключиться к серверу.

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

Сервер/экземпляр не найден или недоступен (ошибки 26, 40, 10053)

Ошибка 26: ошибка при поиске указанного сервера

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.(provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)

Ошибка 40: невозможно открыть соединение с сервером.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Ошибка 10053: ошибка на транспортном уровне при получении результатов с сервера

10053: A transport-level error has occurred when receiving results from the server. (Provider: TCP Provider, error: 0 - An established connection was aborted by the software in your host machine)

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

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

Не удается подключиться к серверу из-за проблем с брандмауэром

Ошибка 40615: не удается подключиться к

Чтобы устранить эту проблему, настройте параметры брандмауэра в базе данных SQL с помощью портала Azure.

Ошибка 5: не удается подключиться к

Чтобы устранить эту ошибку, откройте порт 1433 для исходящих соединений на всех брандмауэрах между клиентом и Интернетом.

Не удалось войти на сервер (ошибки 18456, 40531)

Пользователю '' не удалось войти в систему

Login failed for user ''.This session has been assigned a tracing ID of ''. Provide this tracing ID to customer support when you need assistance. (Microsoft SQL Server, Error: 18456)

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

Как правило, администратор службы может выполнить следующие действия, чтобы добавить данные для входа:

  1. Войдите на сервер с помощью SQL Server Management Studio (SSMS).

  2. Отправьте следующий SQL-запрос в базе данных master, чтобы проверить, отключено ли имя для входа.

    SELECT name, is_disabled FROM sys.sql_logins;
    
  3. Если имя отключено, включите его с помощью следующей инструкции:

    ALTER LOGIN  ENABLE;
    
  4. Если имя пользователя для входа SQL не существует, внесите изменения и отправьте следующий SQL-запрос, чтобы создать новое имя входа SQL:

    CREATE LOGIN 
    WITH PASSWORD = '';
    GO
    
  5. В обозревателе объектов SSMS разверните узел Базы данных.

  6. Выберите базу данных, на доступ к которой пользователю нужно предоставить разрешение.

  7. Щелкните правой кнопкой мыши значок Безопасность, а затем выберите Новый, Пользователь.

  8. Подставьте значения в созданный скрипт с заполнителями и выполните следующий запрос SQL:

    CREATE USER 
    FOR LOGIN 
    WITH DEFAULT_SCHEMA = ;
    GO
    
    -- Add user to the database owner role
    EXEC sp_addrolemember N'db_owner', N'';
    GO
    

    Также можно использовать sp_addrolemember, чтобы сопоставить данные определенных пользователей с конкретными ролями базы данных.

    Примечание

    В базе данных SQL Azure рассмотрите новый синтаксис ALTER ROLE для управления членством в роли базы данных.

Дополнительные сведения см. в статье Управление базами данных и учетными записями в Базе данных SQL Azure.

Ошибки, связанные с истечением времени ожидания подключения.

System. Data. SqlClient. SqlException (0x80131904): время ожидания подключения истекло

System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=29995;

System. Data. SqlClient. SqlException (0x80131904): время ожидания истекло

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.Entity.Core.EntityException: произошла ошибка базового поставщика при открытии

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. -> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. -> System.ComponentModel.Win32Exception: The wait operation timed out

Не удается подключиться к серверу

Cannot connect to .ADDITIONAL INFORMATION:Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=231; handshake=983; [Login] initialization=0; authentication=0; [Post-Login] complete=13000; (Microsoft SQL Server, Error: -2) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476 The wait operation timed out

Такие исключения могут возникать из-за проблем с подключением или запросами. Чтобы убедиться, что эта ошибка вызвана проблемами подключения, см. статью Проверьте, вызвана ли ошибка проблемой подключения.

Ошибки, связанные с истечением времени ожидания подключения, возникают из-за того, что приложению не удается подключиться к серверу. Чтобы устранить эту проблему, попробуйте выполнить действия (в указанном порядке), описанные в разделе Инструкции по устранению распространенных неполадок с подключением.

Ошибки управления ресурсами

Ошибка 10928: идентификатор ресурса: %d

10928: Resource ID: %d. The %s limit for the database is %d and has been reached. See http://go.microsoft.com/fwlink/?LinkId=267637 for assistance. The Resource ID value in error message indicates the resource for which limit has been reached. For sessions, Resource ID = 2.

Попробуйте устранить эту проблему с помощью одного из следующих методов.

  • Проверьте наличие долго выполняющихся запросов.

  1. Отправьте следующий запрос SQL, чтобы проверить представление sys.dm_exec_requests на предмет блокирующих запросов:

    SELECT * FROM sys.dm_exec_requests;
    
  2. Определите буфер входных данных для главной причины блокировки при помощи функции динамического управления sys.dm_exec_input_buffer и session_id запроса, вызвавшего ошибку, например:

    SELECT * FROM sys.dm_exec_input_buffer (100,0);
    
  3. Настройка запроса по главной причине блокировки.

Если база данных постоянно достигает предела, несмотря на решение проблемы блокировки и долго выполняющихся запросов, рассмотрите возможность обновления до выпуска с дополнительными ресурсами — Выпуски.

Дополнительные сведения об ограничениях базы данных см. в статье Ограничения ресурсов базы данных SQL для серверов.

Ошибка 10929: идентификатор ресурса: 1

10929: Resource ID: 1. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database. See http://go.microsoft.com/fwlink/?LinkId=267637 for assistance. Otherwise, please try again later.

Ошибка 40501: служба сейчас перегружена

40501: The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d.

Это ошибка регулирования ресурсов ядра, которая указывает на превышение ограничений по ресурсам.

Дополнительные сведения об ограничениях ресурсов см. в статье Ограничения ресурсов логического сервера SQL.

Ошибка 40544: база данных достигла предельного размера

40544: The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions. Incident ID: . Code: .

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

Описанные ниже действия помогут вам решить эту проблему или предоставят дополнительные возможности.

  1. Проверьте текущий размер базы данных с помощью панели мониторинга на портале Azure.

    Примечание

    Чтобы узнать, какие таблицы потребляют наибольшее пространство, и, следовательно, являются потенциальными претендентами на очистку, отправьте следующий SQL-запрос:

    SELECT o.name,
     SUM(p.row_count) AS 'Row Count',
     SUM(p.reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)'
    FROM sys.objects o
    JOIN sys.dm_db_partition_stats p on p.object_id = o.object_id
    GROUP BY o.name
    ORDER BY [Table Size (MB)] DESC;
    
  2. Если текущий размер не превышает максимальный размер, предусмотренный в данном выпуске, можно увеличить значение параметра MAXSIZE при помощи функции ALTER DATABASE.

  3. Если размер базы данных уже превышает максимальный поддерживаемый выпуском размер, попробуйте выполнить одно или несколько из следующих действий:

    • Выполните обычные действия по очистке базы данных. Например, можно очистить ненужные данные с помощью функции усечения/ удаления или переместить данные при помощи служб SQL Server Integration Services (SSIS) или программы для массового копирования (bcp).
    • Секционируйте или удалите данные, удалите индексы или попробуйте найти возможное решение в документации.
    • Сведения о масштабирования баз данных см. в статье Масштабирование ресурсов отдельной базы данных и Масштабирование ресурсов эластичного пула.

Ошибка 40549: сеанс завершен по причине долго выполняющейся транзакции

40549: Session is terminated because you have a long-running transaction. Try shortening your transaction.

Если эта ошибка повторяется, попробуйте устранить проблему, выполнив описанные ниже действия.

  1. Проверьте представление sys.dm_exec_requests на предмет открытых сеансов, имеющих высокое значение в столбце total_elapsed_time. Выполните эту проверку, запустив следующий скрипт SQL:

    SELECT * FROM sys.dm_exec_requests;
    
  2. Определите буфер входных данных для главной причины блокировки при помощи функции динамического управления sys.dm_exec_input_buffer и session_id запроса, вызвавшего ошибку, например:

    SELECT * FROM sys.dm_exec_input_buffer (100,0);
    
  3. Настройте запрос.

Также рассмотрите возможность пакетной обработки запросов. Сведения о пакетной обработке см. в статье Как повысить производительность приложений базы данных SQL с помощью пакетной обработки.

Ошибка: 40551: сеанс был завершен в связи с чрезмерным использованием базы данных TEMPDB.

40551: The session has been terminated because of excessive TEMPDB usage. Try modifying your query to reduce the temporary table space usage.

Чтобы устранить эту проблему, выполните следующие действия:

  1. Измените запросы, чтобы уменьшить использование временного пространства таблицы.
  2. Удалите временные объекты, которые вам уже не нужны.
  3. Выполните усечение таблиц или удалите неиспользуемые таблицы.

Ошибка 40552: сеанс был завершен в связи с чрезмерным использованием объема журнала транзакций

40552: The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

Устранить эту проблему можно с помощью следующих методов.

  • Эта проблема может возникать из-за операций вставки, обновления или удаления. Попробуйте сократить количество строк, которые обрабатываются непосредственно, выполнив пакетную обработку или разделение на несколько меньших транзакций.

  • Эта проблема может возникать из-за операций перестроения индекса. Чтобы решить эту проблему, убедитесь, что число затронутых строк в таблице * (средний размер обновляемого поля в байтах + 80) составляет

    Примечание

    Для перестроения индекса средний размер обновляемого поля должен быть заменен средним размером индекса.

Ошибка 40553: сеанс был завершен в связи с чрезмерным использованием памяти

40553 : The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows.

Чтобы устранить эту проблему, попробуйте оптимизировать запрос.

Подробное описание процедуры устранения неполадок см. в статье Правильно ли работает мой запрос в облаке?

Таблица дополнительных сообщений об ошибках управления ресурсами

Код ошибки Статус Описание
10928 20 Идентификатор ресурса: %d. Предел %s для базы данных составляет %d, и он достигнут. Дополнительные сведения см. в статье Ограничения ресурсов Базы данных SQL для отдельных баз данных и баз данных в пуле.

Идентификатор ресурса указывает на ресурс, предел которого был достигнут. Для рабочих потоков идентификатор ресурса = 1. Для сеансов идентификатор ресурса — 2.

Дополнительные сведения об этой ошибке и способах ее устранения см. в статье:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.

10929 20 Идентификатор ресурса: %d. Минимальная гарантия %s составляет %d, максимальное значение равно %d, а текущее использование для базы данных — %d. Тем не менее, в настоящее время сервер слишком занят, чтобы обработать более чем %d запросов для этой базы данных. Идентификатор ресурса указывает на ресурс, предел которого был достигнут. Для рабочих потоков идентификатор ресурса = 1. Для сеансов идентификатор ресурса — 2. Дополнительные сведения см. в разделе:
•  Ограничения ресурсов логического сервера SQL Server
•  Ограничения на основе DTU для отдельных баз данных
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.
В противном случае повторите попытку.
40544 20 База данных достигла предельного размера. Секционируйте или удалите данные, удалите индексы или попробуйте найти возможное решение в документации. Сведения о масштабирования баз данных см. в статье Масштабирование ресурсов отдельной базы данных и Масштабирование ресурсов эластичного пула.
40549 16 Сеанс завершен по причине долго выполняющейся транзакции. Рекомендуется сократить транзакцию. Сведения о пакетной обработке см. в статье Как повысить производительность приложений базы данных SQL с помощью пакетной обработки.
40550 16 Сеанс был завершен в связи с тем, что он получил слишком много блокировок. Рекомендуется сократить число строк, считываемых или изменяемых в одной транзакции. Сведения о пакетной обработке см. в статье Как повысить производительность приложений базы данных SQL с помощью пакетной обработки.
40551 16 Сеанс остановлен из-за чрезмерного использования TEMPDB. Попробуйте изменить запрос, чтобы сократить объем использования временных таблиц.

Если вы используете временные объекты, то для экономии места в базе данных TEMPDB удаляйте их сразу после того, как в них исчезнет необходимость. Дополнительные сведения об использовании tempdb в Базе данных SQL см. в статье База данных tempdb в Базе данных SQL.

40552 16 Сеанс был завершен в связи с чрезмерным использованием объема журнала транзакций. Рекомендуется сократить число строк, изменяемых в одной транзакции. Сведения о пакетной обработке см. в статье Как повысить производительность приложений базы данных SQL с помощью пакетной обработки.

В случае выполнения массовых вставок с использованием служебной программы bcp.exe или класса System.Data.SqlClient.SqlBulkCopy попробуйте ограничить количество строк, копируемых на сервер при каждой транзакции, с помощью параметра -b batchsize или BatchSize. В случае перестройки индекса с помощью оператора ALTER INDEX попробуйте использовать параметр REBUILD WITH ONLINE = ON. Сведения о размерах журналов транзакций для модели приобретения vCore см в статьях:
•  Ограничения на основе виртуального ядра для отдельных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных
•  Ограничения ресурсов Управляемого экземпляра SQL Azure.

40553 16 Сеанс был завершен в связи с чрезмерным использованием памяти. Рекомендуется изменить запрос, сократив число обрабатываемых строк.

Сокращение количества операций ORDER BY и GROUP BY в коде Transact-SQL позволяет уменьшить потребление памяти при выполнении запроса. Сведения о масштабирования баз данных см. в статье Масштабирование ресурсов отдельной базы данных и Масштабирование ресурсов эластичного пула.

Ошибки пула эластичных БД

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

Код ошибки Статус Описание Действие по исправлению
1132 17 Хранилище эластичного пула достигло своего предельного значения. Уровень использования хранилища для эластичного пула не может превышать (%d) МБ. Попытка записи данных в базу данных, когда было достигнуто предельное значение хранилища эластичного пула. Сведения об ограничениях ресурсов см. в статьях:
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных.
Если это возможно, попробуйте увеличить DTU эластичного пула и (или) добавить в него пространство хранения для увеличения предельного размера его хранилища, сократить объем памяти, используемой отдельными базами данных в эластичном пуле, или удалить базы данных из пула. Сведения о масштабировании эластичных пулов см. в статье Масштабирование ресурсов эластичного пула. Дополнительные сведения об удалении неиспользуемого пространства из баз данных см. в статье Управление пространством для баз данных в Базе данных SQL Azure.
10929 16 Минимальная гарантия %s составляет %d, максимальное значение равно %d, а текущее использование для базы данных — %d. Тем не менее, в настоящее время сервер слишком занят, чтобы обработать более чем %d запросов для этой базы данных. Сведения об ограничениях ресурсов см. в статьях:
•  Ограничения на основе DTU для пулов эластичных баз данных
•  Ограничения на основе виртуального ядра для пулов эластичных баз данных.
В противном случае повторите попытку. Минимальное количество DTU или виртуальных ядер на базу данных; максимальное количество DTU или виртуальных ядер на базу данных. Общее количество одновременных работников (запросов) по всем базам данных в эластичном пуле превысило ограничение пула.
Если это возможно, попробуйте увеличить DTU или число виртуальных ядер эластичного пула для увеличения предельно допустимого количества работников или удалить базы данных из эластичного пула.
40844 16 База данных '%ls' на сервере '%ls' является базой данных выпуска '%ls' в эластичном пуле и не может иметь связь непрерывной копии. Н/Д
40857 16 Эластичный пул для сервера '%ls' не найден, имя эластичного пула: '%ls'. На указанном сервере указанный эластичный пул не существует. Укажите допустимое имя эластичного пула.
40858 16 Эластичный пул "%ls" на сервере "%ls" уже существует. Указанный эластичный пул уже существует на указанном сервере. Укажите новое имя эластичного пула.
40859 16 Эластичный пул не поддерживает уровень служб '%ls'. Для подготовки эластичного пула указанный уровень служб не поддерживается. Укажите правильный выпуск или оставьте значение уровня служб пустым, чтобы использовать значение по умолчанию.
40860 16 Недопустимая комбинация эластичного пула '%ls' и цели службы '%ls'. Эластичный пул и уровень служб можно указать вместе только в том случае, если тип ресурса задан как ElasticPool. Укажите правильную комбинацию эластичного пула и уровня служб.
40861 16 Выпуск "%.ls" базы данных не может отличаться от уровня служб пула эластичных БД, который равен "%. ls". Выпуск базы данных отличается от уровня служб эластичного пула. Не указывайте выпуск базы данных, который отличается от уровня служб эластичного пула. Обратите внимание, что выпуск базы данных указывать не требуется.
40862 16 Если указана цель служб эластичного пула, то необходимо указать имя этого эластичного пула. Цель службы эластичного пула неоднозначно определяет эластичный пул. Если используется цель служб эластичного пула, укажите имя этого эластичного пула.
40864 16 Число DTU для эластичного пула должно составлять по крайней мере (%d) DTU для уровня служб "%.*ls". Попытка задать для эластичного пула DTU, значение которого ниже минимального ограничения. Повторите попытку, установив для эластичного пула DTU, значение которого хотя бы равно минимальному ограничению.
40865 16 Число DTU для эластичного пула не должно превышать (%d) DTU для уровня служб "%.*ls". Попытка задать для эластичного пула DTU, значение которого выше максимального ограничения. Повторите попытку, установив для эластичного пула DTU, значение которого не превышает максимальное ограничение.
40867 16 Максимальное количество DTU на каждую базу данных должно составлять как минимум (%d) для уровня служб "%.*ls". Попытка задать максимальное количество DTU на каждую базу данных ниже поддерживаемого ограничения. Попробуйте использовать уровень служб эластичного пула, который поддерживает желаемый параметр.
40868 16 Максимальное количество DTU на каждую базу данных не должно превышать (%d) для уровня служб "%.*ls". Попытка задать максимальное число DTU на каждую базу данных, которое находится за пределами поддерживаемого ограничения. Попробуйте использовать уровень служб эластичного пула, который поддерживает желаемый параметр.
40870 16 Минимальное количество DTU на каждую базу данных не должно превышать (%d) для уровня служб "%.*ls". Попытка задать минимальное число DTU на каждую базу, которое находится за пределами поддерживаемого ограничения. Попробуйте использовать уровень служб эластичного пула, который поддерживает желаемый параметр.
40873 16 Количество баз данных (%d) и минимальное количество DTU на каждую базу данных (%d) не может превышать DTU эластичного пула (%d). Попытка задать минимальное количество DTU для баз данных в эластичном пуле, превышающее DTU эластичного пула. Попробуйте увеличить количество DTU эластичного пула, уменьшить минимальное количество DTU на каждую базу данных или уменьшить количество баз данных в эластичном пуле.
40877 16 Эластичный пул не может быть удален до тех пор, пока он содержит какую-либо базу данных. Эластичный пул содержит одну или несколько баз данных и не может быть удален. Чтобы удалить эластичный пул, удалите из него базы данных.
40881 16 В эластичном пуле '%.*ls' достигнуто предельное количество баз данных. Предельное количество баз данных не может превышать (%d) для эластичного пула с DTU (%d). Попытка создания или добавления базы данных в эластичный пул, когда было достигнуто предельное количество баз данных эластичного пула. Если это возможно, попробуйте увеличить DTU эластичного пула, чтобы увеличить предельное количество баз данных, или удалить базы данных из эластичного пула.
40889 16 Невозможно уменьшить количество DTU или размер хранилища для эластичного пула '%.*ls', так как недостаточно места в хранилище баз данных. Попытка ограничить размер хранилища эластичного пула, при которой уменьшается размер используемого им хранилища. Попробуйте сократить использование хранилища отдельными базами данных в эластичном пуле или удалить базы данных из пула, чтобы уменьшить количество DTU или размер хранилища.
40891 16 Минимальное число DTU на базу данных (%d) не может превышать максимального числа DTU на базу данных (%d). Попытка задать минимальное число DTU на каждую базу данных, превышающее максимальное число DTU на каждую базу данных. Убедитесь, что минимальное число DTU на базу данных не превышает максимального числа DTU на базу данных.
TBD 16 Размер хранилища для отдельной базы данных в эластичном пуле не может превышать максимальный размер, допустимый уровнем служб эластичного пула "%.*ls". Максимальный размер базы данных превышает максимальный размер, допустимый уровнем служб эластичного пула. Укажите максимальный размер базы данных, который находится в пределах ограничений на максимальный размер, допустимый уровнем служб эластичного пула.

Не удается открыть базу данных "master", запрошенную при входе в систему. Не удалось выполнить вход

Эта проблема возникает из-за того, что учетная запись не имеет разрешения на доступ к базе данных master. Но по умолчанию SQL Server Management Studio (SSMS) пытается подключиться к базе данных master.

Проблему можно устранить следующим способом.

  1. На экране входа SSMS выберите Параметры, а затем — Свойства подключения.

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

    Свойства подключения

Проверьте, вызвана ли ошибка проблемой подключения.

Чтобы проверить, вызвана ли ошибка проблемой подключения, просмотрите трассировку стека для фреймов, показывающих вызовы, чтобы открыть подключение, как показано ниже (обратите внимание на ссылку на класс SqlConnection):

System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
 at System.Data.SqlClient.SqlConnection.Open()
 at AzureConnectionTest.Program.Main(String[] args)
ClientConnectionId:

Если исключение срабатывает из-за проблем с запросами, вы увидите стек вызовов, аналогичный приведенному ниже (обратите внимание на ссылку на класс SqlCommand). В этом случае выполните настройку запросов.

  at System.Data.SqlClient.SqlCommand.ExecuteReader()
  at AzureConnectionTest.Program.Main(String[] args)
  ClientConnectionId:

Дополнительные рекомендации по точной настройке см. в следующих ресурсах:

  • Как поддерживать актуальность статистики и индексов Azure SQL
  • Ручная настройка производительности запросов в Базе данных SQL Azure
  • Мониторинг производительности Базы данных SQL Azure с помощью динамических административных представлений
  • Управление хранилищем запросов в Базе данных SQL Azure

Инструкции по устранению распространенных неполадок с подключением

  1. Убедитесь, что протокол TCP/IP включен в качестве клиентского протокола на сервере приложений. Дополнительные сведения см. в статье Настройка клиентских протоколов. На серверах приложений, на которых не установлены средства SQL, убедитесь, что протокол TCP/IP включен, запустив cliconfg.exe (служебная программа SQL Server Client Network).

  2. Проверьте строку подключения приложения, чтобы убедиться, что она настроена правильно. Например, убедитесь, что в строке подключения указан правильный порт (1433) и полное имя сервера. См. статью Получение сведений о подключении.

  3. Попробуйте увеличить значение времени ожидания подключения. Мы рекомендуем устанавливать время ожидания подключения не менее 30 секунд.

  4. Проверьте подключение между сервером приложений и Базой данных SQL Azure с помощью SQL Server Management Studio (SSMS), файла UDL, проверки связи или telnet. Дополнительные сведения см. в статьях Устранение неполадок с подключением и Диагностика проблем с подключением.

    Примечание

    На этапе устранения неполадок можно также проверить возможность подключения на другом клиентском компьютере.

  5. Рекомендуется убедиться в том, что логика повторных попыток выполнена. Дополнительные сведения о логике повторных попыток см. в статье Устранение временных сбоев и ошибок подключения к Базе данных SQL.

Если эти действия не помогли устранить проблему, попробуйте собрать дополнительные данные, а затем обратитесь в службу поддержки. Если приложение является облачной службой, включите ведение журнала. Это действие возвращает метку времени ошибки в формате UTC. Кроме того, база данных SQL возвращает идентификатор трассировки. Эти сведения могут использовать службы поддержки пользователей Майкрософт.

Дополнительные сведения о ведении журналов см. в статье Включение ведения журнала диагностики для приложений в службе приложений Azure.

Select box

Let's look at a new input: a “select” box, also known as a “drop-down” or “pull-down” box. A select box contains one or more “options”. Each option has a “value”, just like other inputs, and also a string of text between the option tags. This means when a user selects “Male”, the “formGender” value when accessed by PHP will be “M”.


p>
What is your Gender?
select name="formGender">
  option value="">Select...option>
  option value="M">Maleoption>
  option value="F">Femaleoption>
select>
p>


The selected value from this input was can be read with the standard $_POST array just like a text input and validated to make sure the user selected Male or Female.


if(isset($_POST['formSubmit']) )
{
  $varMovie = $_POST['formMovie'];
  $varName = $_POST['formName'];
  $varGender = $_POST['formGender'];
  $errorMessage = "";

  // - - - snip - - - 
}

?>


It's always a good idea to have a “blank” option as the first option in your select box. It forces the user to make a conscious selection from the box and avoids a situation where the user might skip over the box without meaning to. Of course, this requires validation.


if(!isset($_POST['formGender'])) 
{
  $errorMessage .= "
  • You forgot to select your Gender!
  • "
    ; } ?>

    ( For a generic, easy to use form validation script, see PHP Form Validation Script )

    Multi-select

    Suppose you want to present a select box that allows the user to select multiple options.

    Here is how to create such an input in HTML:

    
    label for='formCountries[]'>Select the countries that you have visited:label>br>
    select multiple="multiple" name="formCountries[]">
        option value="US">United Statesoption>
        option value="UK">United Kingdomoption>
        option value="France">Franceoption>
        option value="Mexico">Mexicooption>
        option value="Russia">Russiaoption>
        option value="Japan">Japanoption>
    select>
    
    
    

    Please note the similarity to a checkbox group. First, set multiple="multiple” as a property of the select box. Second, put [ ] at the end of the name. Finally, we don't really need a “blank” option in this select box, because we can simply check to make sure the user selected something or not. To select multiple values, use the shift or ctrl buttons when clicking.

    The PHP code to process this field is very similar to the checkbox code. $_POST['formCountries'] returns an array of the selected values.

    
    if(isset($_POST['formSubmit'])) 
    {
      $aCountries = $_POST['formCountries'];
      
      if(!isset($aCountries)) 
      {
        echo("

    You didn't select any countries!

    \n"); } else { $nCountries = count($aCountries); echo("

    You selected

    $nCountries countries: "); for($i=0; $i $nCountries; $i++) { echo($aCountries[$i] . " "); } echo(""); } } ?>

    As before, use “isset” is to make sure some values were selected.

    Using switch

    Now, let's change the multi-select box back to a standard single select box. We want to now perform different actions based on what selection the user makes. You could write a bunch of “if” statements, but that could get messy. Let's look at two ways: dynamic commands and the switch statement.

    
    if(isset($_POST['formSubmit'])) 
    {
      $varCountry = $_POST['formCountry'];
      $errorMessage = "";
      
      if(empty($varCountry)) 
      {
        $errorMessage = "
  • You forgot to select a country!
  • "
    ; } if($errorMessage != "") { echo("

    There was an error with your form:

    \n"); echo("
      "
    . $errorMessage . "\n"); } else { // note that both methods can't be demonstrated at the same time // comment out the method you don't want to demonstrate // method 1: switch $redir = "US.html"; switch($varCountry) { case "US": $redir = "US.html"; break; case "UK": $redir = "UK.html"; break; case "France": $redir = "France.html"; break; case "Mexico": $redir = "Mexico.html"; break; case "Russia": $redir = "Russia.html"; break; case "Japan": $redir = "Japan.html"; break; default: echo("Error!"); exit(); break; } echo " redirecting to: $redir "; // header("Location: $redir"); // end method 1 // method 2: dynamic redirect //header("Location: " . $varCountry . ".html"); // end method 2 exit(); } } ?>

    These two approaches have their pro's and con's. The switch method is basically a concise method of writing a bunch of “if” statements. Each case matches the variable passed the switch and performs all actions after that case up until a break statement. In this case, each case is redirecting to the corresponding page to the selected country. If the selected country is not found in one of the cases, the “default” case is assumed, and “Error!” is displayed.

    The second method is just passing the selected value to the header function to redirect to the correct page.

    The first method requires writing more code, but is more secure because it ensures the form only redirects to 6 pre-programmed cases, or else displays an error message and ends execution.

    The second method is much more concise, but less secure because a malicious user could monkey around with the form and submit whatever value he wants. If using method 2, it's a good idea to validate the selected country first, to make sure it won't result in a redirect to a malicious page.

    Topic

    Hi guys, it's me Captain Failure, back with more antics.

    I can't get this to link to the database and was wondering if anyone could help :/
    The main code is the second block below but I have posted some of the config file also.

    Config.php
    public $db_host = 'localhost';
    public $db_user = 'user';
    public $db_pass = 'pass';
    public $db_name = 'db';

    Main page

    require_once('config.php');
    $c = new Config;

    $query = "DELETE FROM tsclient WHERE id = '".$uid."';";
    $db_connection = mysql_connect($c->db_host,$c->db_user,$c->db_pass);
    if (!$db_connection) {
    die($errmsg['ERR_MYSQL']);
    }
    $db_selection = mysql_select_db($c->db_name,$db_connection);
    if (!$db_selected) {
    die($l->errmsg['ERR_DBFAIL']);
    }
    mysql_query($query,$db_selection);
    mysql_close($db_connection);

    I keep hitting die($l->errmsg['ERR_DBFAIL']); but can't work out why... The use has All Privileges in that database and the user/pass details must be correct because it is actually connecting and not giving out [ph]die($errmsg['ERR_MYSQL']);[/php]

    Can anyone help? :/