Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 420
1

Невозможно выполнить запрос из приложения

14.12.2017, 17:38. Просмотров 1262. Ответов 4
Метки sql (Все метки)

Написал простенькое приложение, которое генерирует скрипт восстановления из бекапов. Но при попытке выполнения возникает ошибка
Код
"System.Data.SqlClient.SqlException (0x80131904): Database 'dbToRestore' cannot be opened. It is in the middle of a restore."
.
Это понятно, что за ошибка. Но при этом, если скопировать этот sql и выполнить в SSMS, то всё прекрасно выполняется. Как добиться того, чтобы из приложения тоже выполнялось так же, а не ругалось и не вылетало?
Кликните здесь для просмотра всего текста

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
USE dbToRestore;  
GO  
-- backup crashed db
BACKUP DATABASE dbToRestore  
    TO DISK = '\\192.168.4.5\backups\dbToRestore.bak'   
GO
 
-- restore crashed from backups
USE master;  
GO  
-- .bak
RESTORE DATABASE dbToRestore  
   FROM DISK = '\\192.168.4.5\backups\dbToRestore_backup_2017_12_14_121232_5213051.bak' 
   WITH NORECOVERY, REPLACE;  
GO  
 
-- .trn, foreach
RESTORE LOG dbToRestore   
   FROM DISK = '\\192.168.4.5\backups\dbToRestore_backup_2017_12_14_130000_7771052.trn' 
   WITH NORECOVERY;  
GO  
 
RESTORE DATABASE dbToRestore  WITH RECOVERY;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 using (connection)
                {
                    SqlCommand command = new SqlCommand(sql, connection);
                    connection.Open();
 
                    SqlDataReader reader = command.ExecuteReader();
 
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            Logger.Log.Warn(reader.GetString(0));
 
                            Console.WriteLine("{0}\n", reader.GetString(0));
                        }
                    }
                    else
                    {
                        Console.WriteLine("No rows found.");
                    }
                    reader.Close();
                }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2017, 17:38
Ответы с готовыми решениями:

Невозможно выполнить запрос на форме
Всем привет. Друзья подскажите почему вылетает ошибка На главной форме флажок, который по уму...

Невозможно выполнить POST запрос
Доброго времени суток, комрады. Столкнулся со странной проблемой - не выходит post запрос...

Невозможно выполнить запрос обнаружен неизвестный или некорректный jpeg-маркер
Появляется такая ошибка в Photoshop при открытии файла jpeg. И уже не в первый раз. Причем сам файл...

Невозможно выполнить настройку джойстика
Здравствуйте Имеется джойстик подключенный по usb при переходе Панель управленияИгровые...

4
679 / 541 / 242
Регистрация: 04.08.2015
Сообщений: 1,494
14.12.2017, 18:20 2
Лучший ответ Сообщение было отмечено ai-zer как решение

Решение

ai-zer, System.Data.SqlClient не поддерживает некоторые команды/синтаксис, например GO. Чтобы выполнить скрипт используйте пространство имен Microsoft.SqlServer. Пример можно посмотреть здесь: https://social.msdn.microsoft.... aproviders
1
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 420
16.12.2017, 15:34  [ТС] 3
Спасибо, сработало.
Но к сожалению появилась проблема с таймаутами, что бы я ни ставил в строке подключения, вылетает через 10 минут.
C#
1
2
            
connetionString = "Data Source=localhost;Initial Catalog=master;Integrated Security=SSPI;Connect Timeout=3600;";

Про GO узнал, что это вообще не команда SQL, и его поддерживает только SSMS.
https://docs.microsoft.com/en-... tements-go
0
679 / 541 / 242
Регистрация: 04.08.2015
Сообщений: 1,494
16.12.2017, 16:02 4
Цитата Сообщение от ai-zer Посмотреть сообщение
Data Source=localhost
Так не пишут. Посмотрите здесь : https://www.connectionstrings.com/sql-server/
0
Администратор
Эксперт .NET
12883 / 10503 / 4355
Регистрация: 17.03.2014
Сообщений: 21,188
Записей в блоге: 1
16.12.2017, 16:47 5
Цитата Сообщение от Igr_ok Посмотреть сообщение
Цитата Сообщение от ai-zer Посмотреть сообщение
Data Source=localhost
Так не пишут
Пишут. Это подключение к default instance на локальной машине. Не путайте человека.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2017, 16:47

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

Dorkbot B. Невозможно выполнить логи
Прошу помощи! Завелись червяки Dorkbot B, ужасно все тормозит, виснет, с десятого раза только смог...

Невозможно выполнить операцию перечисления
Всем доброго времени суток! Возникла проблема, ни как не могу понять ее природу. Коллекция была...

Невозможно выполнить ОБРЕЗАТЬ к данному объекту
НЕ получается обрезать части в массиве. В чем может быть проблема?

Ora 30036 Невозможно выполнить insert
Всем привет. Столкнулся на работе с такой проблемой: Мне требуется перенести данные из одной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.