Программный комплекс «Центр здоровья»

техническая поддержка => Программный комплекс «Центр здоровья» => Общие вопросы по программному комплексу => Тема начата: Sonia от 03 Марта 2011, 22:30:55

Название: Резервное копирование базы данных с помощью bat файла
Отправлено: Sonia от 03 Марта 2011, 22:30:55
Доброго времени суток, хочется сделать резервное копирование базы данных центра здоровья с помощью bat файла, который потом запускать из планировщика, вот примерный код, который вроде должен работать
echo off
osql -S D-K126\SQLEXPRESS -E -Q "BACKUP DATABASE [hls_hc] TO  DISK = N'C:\BackUp' WITH NOFORMAT, NOINIT,  NAME = N'hls_hc-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10"

но когда батник запускаю, то получаю сообщение
An error has occured while establishing a connection to the server. When connecting to SQL Server 2005,this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.

Может есть тут на форуме те, кто такую штуку у себя сделал, и сможет помочь...?
Название: Re: Резервное копирование базы данных с помощью bat файла
Отправлено: Вячеслав от 04 Марта 2011, 18:02:05
в интернет пишут на эту ошибку
http://blogs.msdn.com/b/sql_protocols/archive/2005/12/22/506607.aspx

что 
1) либо IP протокол не разрешен на сервере
2) либо вы пытаетесь подключиться не по тому порту
3) либо экземпляр сервера банально не запущен..

но ведь не смотря ни на что Вы нормально работаете
значит один из протоколов разрешен для удаленных подключенных подключений
или TCP/IP  или named pipes  ... это только bat-ник не может подключиться к серверу.

меня смутил ключ -E который вы используете

Ключ -E означает использование Trusted connection т.е. вы подключаетесь к серверу под вашим доменным именем вместо явного указания имени и пароля  : -U<Имя пользователя> -P<Пароль>

А включена ли у вас Windows Authentication  чтобы так пытаться подключиться к серверу с помощью доменного имени ?
может стоит попробовать вместо -E например...

-U<имя> -P<пароль>

у меня такая команда отлично работает:
sqlcmd -S localhost\SQLEXPRESS -U sa -P 123 -Q "BACKUP DATABASE [hls_hc] TO  DISK = N'C:\oms\FK_HC\DATA\hls_hc.bak' WITH NOFORMAT, NOINIT,  NAME = N'hls_hc-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10" -o C:\oms\FK_HC\DATA\log.txt

---
немного почитайте по русски вот здесь
http://www.autosoft.spb.ru/content_371

и совет из интернет: Для SQL Server 2005 или 2008 берем sqlcmd.exe, а для SQL Server 2000 – osql.exe
Название: Re: Резервное копирование базы данных с помощью bat файла
Отправлено: Sonia от 04 Марта 2011, 22:13:06
Спасибо за ответ, поняла в какую сторону искать!
-Действительно для SQL2005 нужно использовать sqlcmd
-после ключа -S должно идти имя сервера (у меня здесь был основной косяк, т.к. я эту команду скопипастила и не увидела в ней, что D-K126 - это имя сервера, которое надо на свое переделать)
-путь пришлось прописать полностью, с именем резервной копии

после этих исправлений все заработало. Вот такой в итоге у меня получился батник:
echo off
sqlcmd -S localhost\SQLEXPRESS -E -Q "BACKUP DATABASE [hls_hc] TO  DISK = N'C:\backUp\lastHCbackUp.bak' WITH RETAINDAYS =3 , STATS=10 "

Название: Re: Резервное копирование базы данных с помощью bat файла
Отправлено: hcadmin от 05 Августа 2011, 09:55:22
всё отлично работает. но вопрос такого характера.

есть старая sql база пациентов она от версии 2.21 мы уже работает на 3.22
понадобилось поднять старые карточки. бекап этой базы есть. дастаточно будет просто восстановить её на sql сервере а на клиентской машине поставить клиент от 2.21 для просмотра базы? или обязательно устанавливать "серверную часть"? как я понял если при установке ФК ЦЗ ставишь и серверную часть то просто восстанавливается база hls_hc из бекапа со своей структурой и цепляется на локальный sql сервер. всё?
Название: Re: Резервное копирование базы данных с помощью bat файла
Отправлено: Служба поддержки от 05 Августа 2011, 10:12:53
всё отлично работает. но вопрос такого характера.

есть старая sql база пациентов она от версии 2.21 мы уже работает на 3.22
понадобилось поднять старые карточки. бекап этой базы есть. дастаточно будет просто восстановить её на sql сервере а на клиентской машине поставить клиент от 2.21 для просмотра базы? или обязательно устанавливать "серверную часть"? как я понял если при установке ФК ЦЗ ставишь и серверную часть то просто восстанавливается база hls_hc из бекапа со своей структурой и цепляется на локальный sql сервер. всё?
Да, верно, достаточно восстановить под другим именем, поставить клиента 2.21, прописать соединение к восстановленной базе данных.