Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Добрый день.
Прошу помощи.

Три сервера:
1) Server1-- PRINCIPAL
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
2) Server2 -- FAILOVER
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
3) Server0 -- Witness
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Организовано зеркалирование в режиме высокой доступности.

Написано приложение APP (C#), с connectionstring
Data Source=SERVER1;Failover Partner=SERVER2;Initial Catalog=DB;Persist Security Info=True;User ID=[user];Password=[password]



Проблема в работе приложения APP.

Ситуация следующая:
1) Server1 -- ok, Server2 -- ok
APP -- ОК
2) Server1 -- остановлен ms sql. Server2 -- переключается на роль PRINCIPAL.
APP -- ОК
3) Server1 -- недоступен с клиента (прописал в hosts левый IP). Server2 -- вручную переключен на роль PRINCIPAL.
APP -- ОК.[/b]
4) Server1 -- физически выключен. Server2 -- переключается на роль PRINCIPAL.
APP -- не может подключиться к базе.


Server -- переключается на роль PRINCIPAL, значит, что все базы на нем переходят в состояние PRINCIPAL

Подскажите, в какую сторону копать? Где какие логи изучать, на клиенте, на witness, на SERVER2 (в момент появления проблемы)?
Продолжу эксперименты в след технологическое окно.
Ночной гуглеж с сонной головой результата не принес.
Субъективно, такое ощущение, что когда Server1 становится недоступен с witness или Server2 -- наблюдается проблема.
28 июл 15, 14:32    [17945233]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexeyMish
APP -- не может подключиться к базе.

И даже сообщение об ошибке есть ?
28 июл 15, 14:35    [17945248]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Glory,

Исходников приложения APP нет.
Обработанное исключение говорит "не удалось подключиться к базе данных".
В след технологическое окно попробую поэкспериментировать с UDL там наверное более информативное сообщение будет.
28 июл 15, 14:42    [17945287]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Glory,

Были еще проблемы с вебом, скорее всего имеющие туже этимологию.
Но 100% уверенности в этом пока нет. Не успел убедиться.
Там была такая ошибка
автор
При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: Поставщик именованных каналов, error: 40 - Не удалось открыть подключение к SQL Server)
28 июл 15, 14:44    [17945304]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexeyMish
Там была такая ошибка
автор
При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: Поставщик именованных каналов, error: 40 - Не удалось открыть подключение к SQL Server)

Из этого не видно, какой сервер ищет ваше приложение. И доступен ли на нем "Поставщик именованных каналов"
28 июл 15, 14:48    [17945320]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlexeyMish
Glory,

Исходников приложения APP нет.
Обработанное исключение говорит "не удалось подключиться к базе данных".
В след технологическое окно попробую поэкспериментировать с UDL там наверное более информативное сообщение будет.


Как это нет, если оно написано на c#
28 июл 15, 14:51    [17945340]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
приложение большое? загрузи куда-нибудь архив с ним, давай посмотрим, что там и как
28 июл 15, 14:52    [17945350]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Winnipuh,

То что оно написано на C#, это почти "инсайдерская информация", исходников нет.
Есть *.config файл, но в нем, насколько понимаю, существенное значение имеет только ConnectionString, его я привел. Если надо могу показать этот файл полностью.


Glory,
Согласен с вами.
Я не программист, скорее администратор колцентра. Ну и в меру сил поддерживаю ms sql.
Могу у программистов запросить всю информацию по вебу, только не совсем понимаю, что именно нужно.
Если только ConnectionString, то их я могу и сам посмотреть.
В web.config куча подключений к различным БД, но общий синтаксис такой.
<add name="ConnectionString_to_t0088" connectionString="Data Source=Server1;Failover Partner=Server2;Initial Catalog=DBNAME;User ID=user;Password=password;min pool size=1;max pool size=50" providerName="System.Data.SqlClient"/>

Т.к. я не на 100% уверен, что приведенная мною ошибка веба имеет ту же причину, что и компилированное приложение, хотел разобраться все таки на нем. Если использование веба более удобная стратегия разбора полетов, то тогда возьму таймаут до завтрашнего дня. Проведу эксперимент, чтобы убедиться в тексте ошибки.
28 июл 15, 15:07    [17945464]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
o-o
Guest
AlexeyMish
То что оно написано на C#, это почти "инсайдерская информация", исходников нет.

это для вас нет, а Winnipuh вам разделает на исходники.
делитесь
28 июл 15, 15:11    [17945502]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexeyMish
В web.config куча подключений к различным БД, но общий синтаксис такой.

А драйвера, которые используют ваши приложения, поддерживают аттрибут Failover Partner ? И именно в таком написании ?
28 июл 15, 15:13    [17945513]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
AlexeyMish,

Microsoft SQL Server 2008 R2 (RTM) - некошерно ,так в продакшине. Количество пофикшенного к сегодняшнему моменту просто огромно. Надо паки поставить и хот фиксы у вас "голая" версия везде
28 июл 15, 15:13    [17945515]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
AlexeyMish,

копать в сторону годного connection string'а тынц

если у вас .NET Sql Server Provider или SQL Native Client оно и с обычным connection string вас перебросит куда надо. для первого случая проверено.

А если что-то иное, то OLE DB Provider (FailoverPartner) / ODBC Driver (Failover_Partner ) / ActiveX Data Objects (ADO) (Failover Partner). Вам нужно указать в connection string failover partner'а.
28 июл 15, 15:13    [17945517]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
churupaha
если у вас .NET Sql Server Provider или SQL Native Client оно и с обычным connection string вас перебросит куда надо. для первого случая проверено.


в случае ручного файловера. alter database dbN set partner failver...

---

еще проверьте вы логины перенесли с основного сервера на резервный с теми же passwordhash и sid...
28 июл 15, 15:17    [17945546]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlexeyMish
Winnipuh,

То что оно написано на C#, это почти "инсайдерская информация", исходников нет.
Есть *.config файл, но в нем, насколько понимаю, существенное значение имеет только ConnectionString, его я привел. Если надо могу показать этот файл полностью.


я же пишу - упакуй все файлы (*.exe, *.dll, *.config и т.д.) в фолдере, где приложение установлено и кинь мне куда-нибудь архив.
28 июл 15, 15:19    [17945560]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Glory,
Если я правильно понимаю, то если бы не поддерживали, то подключение к Failover не проходило в принципе. А оно не проходит исключительно при физическом отключении Server1. Или я не прав?

Winnipuh ,
небольшое. Тут существует возможность отправить сообщение в личку?
Или притачить прямо сюда?

churupaha,
По поводу логинов, все сделано. Как раз сегодня эту задачу и решал ночью. Попутно вскрылась проблема с недоступностью failover
По поводу NativeClient не понял. Т.е. если в connectionstring вообще не указывать failover, клиент все равно сможет к нему подключиться? Это попахивает магией. :) Или поясните, я вас не так понял?
28 июл 15, 15:24    [17945596]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexeyMish
Если я правильно понимаю, то если бы не поддерживали, то подключение к Failover не проходило в принципе. А оно не проходит исключительно при физическом отключении Server1. Или я не прав?

Т.е. вы не знаете, какой драйвер используется ?
28 июл 15, 15:27    [17945623]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlexeyMish
Glory,
Если я правильно понимаю, то если бы не поддерживали, то подключение к Failover не проходило в принципе. А оно не проходит исключительно при физическом отключении Server1. Или я не прав?

Winnipuh ,
небольшое. Тут существует возможность отправить сообщение в личку?
Или притачить прямо сюда?

churupaha,
По поводу логинов, все сделано. Как раз сегодня эту задачу и решал ночью. Попутно вскрылась проблема с недоступностью failover
По поводу NativeClient не понял. Т.е. если в connectionstring вообще не указывать failover, клиент все равно сможет к нему подключиться? Это попахивает магией. :) Или поясните, я вас не так понял?


там по-моему есть мой емейл, туда отправь
28 июл 15, 15:29    [17945642]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
AlexeyMish
По поводу NativeClient не понял. Т.е. если в connectionstring вообще не указывать failover, клиент все равно сможет к нему подключиться? Это попахивает магией. :) Или поясните, я вас не так понял?


Магии никакой нет, но я выдрал контекст конечно. Если у вас такой клиент и он уже подключен и вы руками сделали alter database set failover, то ваш клиент точно переедет куда надо. А вот если сервер который в данный момент primary вырубить и застартовать клиента где в connection string не просписано failover partner то он конечно второй узел не найдет. Магия вся кроется в том что в момент коннекта к primary также передается инфа о mirror.
28 июл 15, 15:34    [17945689]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
churupaha,

а вы зацепиться впринципе можете с клиента на порт sql server'a узла, содержащего mirror базу?
28 июл 15, 15:36    [17945703]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Winnipuh,
ушло.

Glory,
не знаю. Буду уточнять у разрабов.

churupaha,
Вот теперь кажется понял в чем проблема. Этого я не мог предположить.
В совокупности с вопросами Glory вероятность того, что корень моих без в драйвере близок к 100%
Зацепиться с клиента, это что значит? Попробовать телнетнутся на порт 1433? Или каким способом это проверяется?
28 июл 15, 15:44    [17945759]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlexeyMish
Glory,

Исходников приложения APP нет.
Обработанное исключение говорит "не удалось подключиться к базе данных".
В след технологическое окно попробую поэкспериментировать с UDL там наверное более информативное сообщение будет.



Такое сообщение только в одной функции

public static bool Login(string login, string password, out int idUser)
{
    LoginTask task = new LoginTask {
        Login = login,
        Password = password
    };
    Thread thread = new Thread(new ThreadStart(task.Run));
    thread.Start();
    for (int i = 0; !task.Finished && (i < 100); i++)
    {
        Thread.Sleep(100);
    }
    thread.Abort();
    if (task.Finished)
    {
        idUser = UserInfo.GlobalUserInfo.UserID;
        return task.Result;
    }
    MessageBox.Show("Не удалось подключиться к базе данных.\r\nПриложение будет работать в аварийном режиме.");
    WithoutDatabase = true;
    UserInfo.LoadFromXml();
    idUser = UserInfo.GlobalUserInfo.UserID;
    return true;
}

  
28 июл 15, 15:49    [17945818]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
AlexeyMish
Member

Откуда:
Сообщений: 71
Winnipuh,

Ну тут похоже на функцию логона. Правда непосредственно про базу данных ни слова не наблюдаю.
28 июл 15, 16:05    [17945973]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
AlexeyMish
уточнять у разрабов.

churupaha,
Вот теперь кажется понял в чем проблема. Этого я не мог предположить.
В совокупности с вопросами Glory вероятность того, что корень моих без в драйвере близок к 100%
Зацепиться с клиента, это что значит? Попробовать телнетнутся на порт 1433? Или каким способом это проверяется?


так и проверяется. только порт может быть и не 1433
28 июл 15, 16:10    [17946022]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
и еще, если у вас инстанс именованный на второй ноде, то в connection string надо указать server2\instance_name. а еще sql browser нужно включить.
28 июл 15, 16:13    [17946049]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2008 R2. Mirroring. Проблема с доступностью БД при физ отключение PRINCIPAL.  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
AlexeyMish
Winnipuh,

Ну тут похоже на функцию логона. Правда непосредственно про базу данных ни слова не наблюдаю.


Это единственное место с таким сообщением, и собсвтенно единственно место, где делается коннект
Это тот таск

internal class LoginTask
{
    // Fields
    public bool Finished = false;
    public string Login;
    public string Password;
    public bool Result = false;

    // Methods
    public void Run()
    {
        int idUser = 0;
        try
        {
            this.Result = DBConnector.InternalLogin(this.Login, this.Password, out idUser);
            this.Finished = true;
        }
        catch
        {
        }
    }
}

/// ...

public static bool InternalLogin(string login, string password, out int idUser)
{
    idUser = 0;
    lock (lockClass)
    {
       [b] OpenSqlConnections();[/b] <------------- два реальных коннекта к базе по указанным в конфиге строкам

// дальше самопальная проверка чего-то там

        SqlCommand command = new SqlCommand("My_LoginProc", connection_conf) {
            CommandType = CommandType.StoredProcedure
        };
        command.Parameters.AddWithValue("@login", login);
        command.Parameters.AddWithValue("@password", password);
///...



и две строки коннекта из конфига для двух коннектов

<setting name="ConnectionStringConf" serializeAs="String">
<value>Data Source=SQLSERVER1;Failover Partner=SQLSERVER2;Initial Catalog=data_Conf;Persist Security Info=True;User ID=ich_bin_user;Password=[pwd];</value> </setting>
<setting name="ConnectionStringMon" serializeAs="String">
<value>Data Source=SQLSERVER1;Failover Partner=SQLSERVER2;Initial Catalog=data_Mon;Persist Security Info=True;User ID=ich_bin_user;Password=[pwd];</value>
</setting>
28 июл 15, 16:25    [17946126]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить