Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запуск backup из bat без указания логина-пароля / 13 сообщений из 13, страница 1 из 1
08.02.2018, 23:35
    #39599442
nnmserg11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
Народ, всем хэллоу!

Есть задача - создание backup'а по задаче из планировщика ОС для MS SQL Express(( При этом, в bat'нике не должна прописываться учетная запись (логин-пароль) пользователя, из-под которого делается резервная копия.

Я нашел руководство от M$ ( https://support.microsoft.com/en-us/help/2019698/how-to-schedule-and-automate-backups-of-sql-server-databases-in-sql-se), но что-то видимо мною понято не верно, т.к. кроме создания пустого файла *.txt ничего не происходит.

Вопрос:
правильно ли я понимаю, что достаточно скрипт_1 запустить в M$ SQL (без внесения каких-либо изменений), а для скрипта_2 создать bat (изменив пути сохранения резервной копии и лога) и соот-но задачу в планировщике?

Скрипты (прошу не ругать, а скопировать в какой-нибудь notepad++, т.к. пробелы и отступы удаляется автоматом):

1. Скрипт для master database:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
USE [master] 
GO 
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabases] ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author: Microsoft 
-- Create date: 2010-02-06
-- Description: Backup Databases for SQLExpress
-- Parameter1: databaseName 
-- Parameter2: backupType F=full, D=differential, L=log
-- Parameter3: backup file location
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabases]  
            @databaseName sysname = null,
            @backupType CHAR(1),
            @backupLocation nvarchar(200) 
AS 
       SET NOCOUNT ON; 
            DECLARE @DBs TABLE
            (
                  ID int IDENTITY PRIMARY KEY,
                  DBNAME nvarchar(500)
            )
             -- Pick out only databases which are online in case ALL databases are chosen to be backed up
             -- If specific database is chosen to be backed up only pick that out from @DBs
            INSERT INTO @DBs (DBNAME)
            SELECT Name FROM master.sys.databases
            where state=0
            AND name=@DatabaseName
            OR @DatabaseName IS NULL
            ORDER BY Name
            -- Filter out databases which do not need to backed up
            IF @backupType='F'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','AdventureWorks')
                  END
            ELSE IF @backupType='D'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE IF @backupType='L'
                  BEGIN
                  DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
                  END
            ELSE
                  BEGIN
                  RETURN
                  END
            -- Declare variables
            DECLARE @BackupName varchar(100)
            DECLARE @BackupFile varchar(100)
            DECLARE @DBNAME varchar(300)
            DECLARE @sqlCommand NVARCHAR(1000) 
        DECLARE @dateTime NVARCHAR(20)
            DECLARE @Loop int                  
            -- Loop through the databases one by one
            SELECT @Loop = min(ID) FROM @DBs
      WHILE @Loop IS NOT NULL
      BEGIN
-- Database Names have to be in [dbname] format since some have - or _ in their name
      SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'
-- Set the current date and time n yyyyhhmmss format
      SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),'/','') + '_' +  REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')  
-- Create backup filename in path\filename.extension format for full,diff and log backups
      IF @backupType = 'F'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'D'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK'
      ELSE IF @backupType = 'L'
            SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN'
-- Provide the backup a name for storing in the media
      IF @backupType = 'F'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
      IF @backupType = 'D'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
      IF @backupType = 'L'
            SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
-- Generate the dynamic SQL command to be executed
       IF @backupType = 'F' 
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                  END
       IF @backupType = 'D'
                  BEGIN
               SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                  END
       IF @backupType = 'L' 
                  BEGIN
               SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                  END
-- Execute the generated SQL command
       EXEC(@sqlCommand)
-- Goto the next database
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
END


2. Скрипт для bat: (Step B, Example 4 по ссылке от M$)

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"
...
Рейтинг: 0 / 0
09.02.2018, 13:29
    #39599650
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
не то что-то пишете.
никакое тхт не сoздается.
или вам будет выдана ошибка синтаксиса
(а она есть, ибо параметр-база передает имя базы в каких-то левых апострофах),
или ошибка подключения (например, сервер не найден)
---
у меня ваша проца отработала из cmd без ошибок,
создав файл бэкапа master_FULL_02092018_112326.BAK по указанному пути
...
Рейтинг: 0 / 0
09.02.2018, 14:03
    #39599680
_human
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
nnmserg11Вопрос:
правильно ли я понимаю, что достаточно скрипт_1 запустить в M$ SQL (без внесения каких-либо изменений), а для скрипта_2 создать bat (изменив пути сохранения резервной копии и лога) и соот-но задачу в планировщике?
Да.

+
Можете добавить сообщения в процеруду для дебага и записать в лог

Код: plaintext
1.
2.
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"  -o "<output file path>"
 
...
Рейтинг: 0 / 0
09.02.2018, 14:15
    #39599687
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
_humannnmserg11Вопрос:
правильно ли я понимаю, что достаточно скрипт_1 запустить в M$ SQL (без внесения каких-либо изменений), а для скрипта_2 создать bat (изменив пути сохранения резервной копии и лога) и соот-но задачу в планировщике?
Да.

+
Можете добавить сообщения в процеруду для дебага и записать в лог

Код: plaintext
1.
2.
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName=’USERDB’, @backupType='F'"  -o "<output file path>"
 

вы так и тащите за собой изначаньно неверные апострофы в скрипте:
Код: sql
1.
@databaseName=’USERDB’
...
Рейтинг: 0 / 0
09.02.2018, 16:16
    #39599800
nnmserg11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
_human, Yasha123,

Спасибо, ребят)) Действительно ошибся)) Всё отработало, внес корректировки и лог в файл записываю.
...
Рейтинг: 0 / 0
26.10.2018, 15:56
    #39723600
AlexDE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
Пример на локальном сервере работает, а как интересно , можно таким скриптом бэкапнутъ базу на удаленном сервере, на нужный мне сетевой диск. В менеджмент студии не дает мне выбирать сетевые диски, только локальные где база стоит.
...
Рейтинг: 0 / 0
26.10.2018, 16:05
    #39723616
AlexDE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
и если на нормальном стандарте стоит , не на Ехпресе, с указанием пользователя и пароля
...
Рейтинг: 0 / 0
26.10.2018, 16:06
    #39723620
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
AlexDEПример на локальном сервере работает, а как интересно , можно таким скриптом бэкапнутъ базу на удаленном сервере, на нужный мне сетевой диск. В менеджмент студии не дает мне выбирать сетевые диски, только локальные где база стоит.
Для доступа на удаленный сервер нужно иметь возможность авторизоваться на нем, т.е. нужно имя и пароль.
Бэкап делает СЕРВЕР от "себя лично".

Анализируй это.
...
Рейтинг: 0 / 0
26.10.2018, 16:14
    #39723629
AlexDE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
ползователь и пароль есть просто орфографию не знаю для батника
...
Рейтинг: 0 / 0
26.10.2018, 16:42
    #39723656
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
AlexDEПример на локальном сервере работает, а как интересно , можно таким скриптом бэкапнутъ базу на удаленном сервере, на нужный мне сетевой диск. В менеджмент студии не дает мне выбирать сетевые диски, только локальные где база стоит.
что видит, то и показывает.
а чтобы он смог еще что-то увидеть, надо ЕГО учетке(под которой сервис запущен)
выдать права на интересующие диски
...
Рейтинг: 0 / 0
26.10.2018, 16:59
    #39723681
AlexDE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
В том то и проблема , я хочу динамически к НАС Серверу подключаться, а потом отрубать, это надо так как НАС запоролен. Если я его просто как сетевой диск подключаю, он периодически отвисает. Начнает появлятся окно с запросом пароля. Я хотел в батнике отрубать его , потом заново подключать, А потом бэкапить на него по сети.
...
Рейтинг: 0 / 0
26.10.2018, 17:05
    #39723690
AlexDE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
Похоже селект подправить надо, прокатит так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE PROCEDURE [dbo].[sp_BackupDatabases]  
            @databaseName sysname = null,
            @backupType CHAR(1),
            @backupLocation nvarchar(200)
	    @DBUser char(3) 
	    @DBPassword char(15) 
AS 
       SET NOCOUNT ON; 
            DECLARE @DBs TABLE
            (
                  ID int IDENTITY PRIMARY KEY,
                  DBNAME nvarchar(500)
            )
             -- Pick out only databases which are online in case ALL databases are chosen to be backed up
             -- If specific database is chosen to be backed up only pick that out from @DBs
            INSERT INTO @DBs (DBNAME)
            SELECT Name FROM master.sys.databases
            where state=0
            AND name=@DatabaseName
            OR @DatabaseName user=@DBUser password = @DBPassword IS NULL
            ORDER BY Name
            -- Filter out databases ...........................................
...
Рейтинг: 0 / 0
27.10.2018, 08:55
    #39723841
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск backup из bat без указания логина-пароля
AlexDEползователь и пароль есть просто орфографию не знаю для батника
Не, батенька, нихрена ты не понял.

Какая орфография, ежели ты ишо алфавит не выучил?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запуск backup из bat без указания логина-пароля / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]