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

вопрос возник в связи с очередным переездом на новый сервер. Скриптами переносятся джобы, в которых выполняется, например, запуск пакетов DTS утилитой dtsrun. Ну и всякие аналогичные ситуации.
Т.е. есть старый сервер с именем OldServer. Появился новый сервер с именем NewServer. Постепенно все переносится со старого на новый, идет отладка. Затем старый сервер отключается, а новый переименовывается на старое имя.
И чтобы не лопатить тонны кода с автозаменой, появилась мысль использовать (local) вместо имени сервера.

Это нормальная практика или так лучше не делать?
25 июл 14, 02:07    [16355358]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8880
?!

Пару строк примера, пожалуйста, приведите...
25 июл 14, 08:28    [16355571]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
нуб987
Guest
SIMPLicity_
?!

Пару строк примера, пожалуйста, приведите...

--запускаем пакет DTS
CREATE PROCEDURE RunDTS
   @DTSName varchar(200) -- имя пакета

as
begin

declare
   @cmd varchar(4000)

set @cmd = 'dtsrun /S <ServerName> /N ' + @DTSName + ' /E' -- здесь либо <ServerName>, либо (local)
exec master..xp_cmdshell @cmd --, no_output

end
25 июл 14, 10:32    [16355980]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
@@servername??
25 июл 14, 10:33    [16355991]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
нуб987
Guest
так же есть куча джобов, в которых запускаются пакеты утилитой dtsrun
25 июл 14, 10:33    [16355992]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
нуб987
Guest
Crimean
@@servername??

это придется динамические запросы писать. В джобах это неинтересно, когда сразу задаем командную строку
25 июл 14, 10:34    [16356003]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Алиас сервера сделайте.
25 июл 14, 10:54    [16356136]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
нуб987
Crimean
@@servername??

это придется динамические запросы писать. В джобах это неинтересно, когда сразу задаем командную строку
Так вопрос то был о коде на T-SQL? В нём непонятно, где нужен (local)

А в строках коннекта для разных утилит, в описании коннекта в SSIS пакетах и т.д., конечно, (local) использовать можно и нужно.
25 июл 14, 10:54    [16356141]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
alexeyvg
(local) использовать можно и нужно.
А следующий переезд будет на именованный экземпляр и опять все придется править.
25 июл 14, 11:04    [16356206]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
автор
exec master..xp_cmdshell

Это нехорошо, используйте виндовый шедулер. Легкий путь - не всегда верный :)
Не используйте админские инструменты дабы не бороться с ленью...
25 июл 14, 11:48    [16356538]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
нуб987
это придется динамические запросы писать. В джобах это неинтересно, когда сразу задаем командную строку


а это что?

set @cmd = 'dtsrun /S <ServerName> /N ' + @DTSName + ' /E' -- здесь либо <ServerName>, либо (local)

то есть клеить одну переменную - хорошо, а другую - плохо?
25 июл 14, 12:28    [16356809]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
нуб987
Guest
Crimean
нуб987
это придется динамические запросы писать. В джобах это неинтересно, когда сразу задаем командную строку


а это что?

set @cmd = 'dtsrun /S <ServerName> /N ' + @DTSName + ' /E' -- здесь либо <ServerName>, либо (local)

то есть клеить одну переменную - хорошо, а другую - плохо?

я имел в виду, что в джобах вместо выполнения командной строки вида
dtsrun /S (local) /N <DTSName> /E

придется выполнять динамический запрос
25 июл 14, 12:48    [16356953]     Ответить | Цитировать Сообщить модератору
 Re: использование (local)  [new]
Crimean
Member

Откуда:
Сообщений: 13147
invm
Алиас сервера сделайте.


апну )
25 июл 14, 23:17    [16360056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить