powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как заменить строку в TSQL скрипте средствами Powershell
3 сообщений из 3, страница 1 из 1
Как заменить строку в TSQL скрипте средствами Powershell
    #38057288
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть джоба, один из шагов которой добавляет статьи в репликацию.

Код: sql
1.
2.
3.
$DBScriptFile = "C:\Scripts\RO_replication.sql" 
#SCRIPT
Invoke-Sqlcmd -ServerInstance localhost -database master -InputFile $DBScriptFile


RO_replication.sql скрипт выглядит следующим образом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
USE MyDB{CountryCode}
GO
PRINT 'Adding articles to MyDB{CountryCode}_RO'
GO
exec sp_addarticle @publication = MyDB{CountryCode}_RO', @article = N'AdChannel', ...
GO
...


Мне нужно изменить код Powershell выше, чтобы прежде чем запускать скрипт, он заменял {CountryCode} на некоторый код из двух символов. Сохранять это изменение не нужно, ибо скрипт в этой папке должен оставаться универсальным. Этот код получается следующим запросом:

Код: sql
1.
Select CountryCode From [DBUtilities].[dbo].[EnvBuild] Where Id = (select MAX(Id) from [DBUtilities].[dbo].[EnvBuild])



Как это можно сделать?

Спасибо.
...
Рейтинг: 0 / 0
Как заменить строку в TSQL скрипте средствами Powershell
    #38062082
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что у меня получилось пока:

Код: sql
1.
2.
3.
4.
$DBScriptFile = "C:\Scripts\test.sql" 
$replacement = invoke-sqlcmd -query "Select CountryCode From [DBUtilities].[dbo].[EnvBuild] Where Id = (select MAX(Id) from [DBUtilities].[dbo].[EnvBuild])"
$Query = $DBScriptFile -replace "{CountryCode}",[string]$replacement[0]
Invoke -Sqlcmd -ServerInstance localhost -database master -InputFile $Query


Последняя команда не работает поскольку $Query содержит путь к файлу:
C:\Scripts\test.sql

Мне нужно чтобы там был текст скрипта. Файл "C:\Scripts\test.sql" все еще содержит {CountryCode}. Я бы мог слить результат замены обратно в файл, но я не хочу изменять файл. Я также не хочу плодить кучу копий файла. Мне просто нужно положить результат замены в переменную и запустить скрипт из переменной.
...
Рейтинг: 0 / 0
Как заменить строку в TSQL скрипте средствами Powershell
    #38065926
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
Roust_m,

Код: powershell
1.
Invoke-SqlCMD ... -query ((gc $filePath) -replace '{COuntryCode}' [string]$replacement[0])
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как заменить строку в TSQL скрипте средствами Powershell
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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