Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
Есть скрипт по копии баз (рабочий)

set dateformat dmy;

declare @BACKUPDataBaseName    varchar(20)
declare @RESTOREDataBaseName    varchar(20)

declare @TimeSignature   varchar(50)
declare @BackupFileName  varchar(150)

set @BACKUPDataBaseName    = 'base1'
set @RESTOREDataBaseName   = 'base2'


--Имя файла со временем
set @TimeSignature = convert(varchar(20) , getdate() , 120)

set @TimeSignature = replace(@TimeSignature, '/','_')
set @TimeSignature = replace(@TimeSignature, ':','_')
set @TimeSignature = replace(@TimeSignature, '-','_')

set @BackupFileName  = '\\PL\' + @BACKUPDataBaseName + '__' + @TimeSignature + '.bak'



BACKUP DATABASE @BACKUPDataBaseName
TO DISK = @BackupFileName

RESTORE DATABASE @RESTOREDataBaseName
FROM DISK =@BackupFileName
WITH 
REPLACE;

GO


теперь эти базы на разных серверах
Как указать явно на каком сервере выполнять BACKUP а на каком RESTORE ?

Сообщение было отредактировано: 28 фев 17, 15:20
28 фев 17, 15:14    [20251171]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
bvb4
Как указать явно на каком сервере выполнять BACKUP а на каком RESTORE ?
Узнать у того, что вам задачу ставить по переносу баз.
28 фев 17, 15:21    [20251205]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
Я оценил тонкий сарказм ....

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

ИМХО где то нужно ведь указывать логин и пароль
28 фев 17, 16:20    [20251470]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
bvb4,

sqlcmd.exe

В параметрах задавать сервер, базу, если надо, login? пароль и т.д.
Всё можно провернуть в батнике.
Можно простенького клиента для формирования строки запуска
через пользовательский интерфейс сделать.
28 фев 17, 16:27    [20251495]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
Нет мне надо в скрипте котрый я запускаю в менеджмент студио на сервере приемнике.


Я так полагаю мне нужно использовать связанный сервер что то типа

declare @login sysname , @password sysname
declare sourcelogins cursor for
select name , password
from sourceserver.master.dbo.syslogins
where isntname = 0 and charindex( 'repl_' , name ) = 0 and
charindex( 'distributor' , name ) = 0 and name != 'sa'
open sourcelogins
while ( @@fetch_status = 0)
begin
fetch sourcelogins into @login , @password
exec sp_addlogin @login , @password , @encryptopt = 'skip_encryption'
end
close sourcelogins
deallocate sourcelogins
go
28 фев 17, 16:35    [20251528]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
komrad
Member

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

в SSMS режим "sqlcmd mode" и команда ":connect"
28 фев 17, 17:23    [20251744]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
MacaronicTragedy
Member

Откуда:
Сообщений: 99
в SMSS есть такая пенелька, называется Registered servers. Там регистрируешь все свои сервера, потом правой кнопкой на группе серверов - New Query. Если серверов много, может долго тупить (коннектиться) - не мучай его.

а далее в скрипте перед командами бэкапа и рестора можешь использовать что-то вроде If @@servername like '%something%' backup database ........ else restore database.....
28 фев 17, 17:45    [20251829]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31965
bvb4
Нет мне надо в скрипте котрый я запускаю в менеджмент студио на сервере приемнике.

Я так полагаю мне нужно использовать связанный сервер
Да, можно через связанный сервер.

Только непонятно, к чему вы привели код с циклом по логинам, как он связан с задачей?
28 фев 17, 22:10    [20252491]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
user23
Member

Откуда:
Сообщений: 68
exec [ПрилинкованныйСервер].База.dbo.sp_executesql 
N'RESTORE DATABASE ИмяБазы
   FROM DISK = ''\\ПутьИФайл.bkp''
   WITH REPLACE,NORECOVERY, stats=1,
   MOVE ''_privat_base_dat'' TO ''D:\DBSQL\Data\Имя.mdf'', 
   MOVE ''_privat_base_log'' TO ''D:\DBSQL\Data\Имя.ldf'''
1 мар 17, 09:27    [20253124]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
user23
создать прилинкованный сервер подключив его в менеджмент студио ?
1 мар 17, 15:31    [20254541]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
Что такое [ПрилинкованныйСервер].База.dbo.sp_executesql
1 мар 17, 15:38    [20254580]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
MacaronicTragedy
Member

Откуда:
Сообщений: 99
bvb4
Что такое [ПрилинкованныйСервер].База.dbo.sp_executesql


Ты можешь на сиквеле создать связанный сервер (linked server)
создается процедурой sp_addlinkedserver или в гуе.
Ты там указываешь драйвер, адрес, пользователя и прочие настройки коннекта, а потом с локального сервера можешь обращаться к базам удаленного сервера используя именование объектов вида linkedserver.database.schema.table.
Если память мне не изменяет, для запуска удаленных процедур линкед серверу нужно включить опцию RPC.
1 мар 17, 15:49    [20254631]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
bvb4
Member

Откуда:
Сообщений: 28
Мне бы пример какой для лучшего понимания
1 мар 17, 15:59    [20254673]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
MacaronicTragedy
Member

Откуда:
Сообщений: 99
Держи:

/****** Создаем сам сервер  ******/
EXEC master.dbo.sp_addlinkedserver @server = N'TESTSQL', @srvproduct=N'TESTSQL1DR\INSTANCE1DR', @provider=N'SQLNCLI', @datasrc=N'TESTSQL1DR\INSTANCE1DR'
 /* Создаем маппинг пользователей в данной ситуации будет использован текущий контекст безопасности, какой у тебя логин на локальном сервере, под таким ты и постучишься на удаленный, но можно назначить, что например, если маша петрова стучится, то пусть попадает на удаленный сервак под УЗ пети иванова... они все равно гражданским браком совместно проживают */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TESTSQL',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
/****** Включаем опцию (зпауск удаленных процедур)  ******/
EXEC master.dbo.sp_serveroption @server=N'TESTSQL', @optname=N'rpc', @optvalue=N'false'
GO

-- теперь можно обращаться к удаленному серверу, если есть права, естественно

select * from TESTSQL.master.sys.databases


если тебе это все нужно для единоразового запуска, проще, как я выше писал сделать
1 мар 17, 16:38    [20254837]     Ответить | Цитировать Сообщить модератору
 Re: Выполнение скрипта над базами расположенными на разных серверах  [new]
MacaronicTragedy
Member

Откуда:
Сообщений: 99
там в скрипте должно быть
/****** Включаем опцию (зпауск удаленных процедур) ******/
EXEC master.dbo.sp_serveroption @server=N'TESTSQL', @optname=N'rpc', @optvalue=N'true'
1 мар 17, 16:46    [20254859]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить