Powershell: удаление индексов строк публикации профиля SQL - PullRequest
0 голосов
/ 15 мая 2019

Я хочу удалить некластеризованные индексы из скрипта, используя PowerShell, возможно, Regex.Предыстория: у нас много данных в базе данных, и мы хотим предотвратить создание или изменение некластеризованных индексов в течение 1 часа от времени создания индекса.Как провести это с PowerShell?PowerShell примет входной сценарий и отредактирует его соответствующим образом.

Опубликовать сценарий профиля:

Create table dbo.Test(TestId int, ColumnA int, ColumnB int)

GO
CREATE NONCLUSTERED INDEX [ncx_Test_ColumnA]
    ON [dbo].[Test]([ColumnA] ASC);


GO
PRINT N'Creating [ncx_Test_ColumnA]...';


GO
CREATE NONCLUSTERED INDEX [ncx_Test_ColumnB]
    ON [dbo].[Test]([ColumnB] ASC);


GO
PRINT N'Creating [ncx_Test_ColumnB]...';


GO
create procedure dbo.TestSelect1
as select 1

В приведенном выше сценарии я хочу удалить «Создание строк некластеризованного индекса,(и дополнительный бонус не требуется) будет удалять соответствующие операторы Print, сохранять все остальное, таблицы и хранимые процедуры.

Удалить только эти строки, оставить все остальное:

CREATE NONCLUSTERED INDEX [ncx_Test_ColumnA]
    ON [dbo].[Test]([ColumnA] ASC);


PRINT N'Creating [ncx_Test_ColumnA]...';


CREATE NONCLUSTERED INDEX [ncx_Test_ColumnB]
    ON [dbo].[Test]([ColumnB] ASC);


PRINT N'Creating [ncx_Test_ColumnB]...';

Хорошоресурс для powershell: попытка выяснить

Автоматическое создание индексов в другой файловой группе, редактирование сценария публикации профиля

1 Ответ

0 голосов
/ 15 мая 2019

Может ли кто-нибудь написать это?Кажется, работает,

$sql = Get-Content C:\Users\TestUser\Desktop\indextext\original.txt -Raw
$sql = $sql -replace '(?smi)(CREATE NONCLUSTERED INDEX (.*?))\);',''
$sql | Set-Content -Path C:\Users\TestUser\Desktop\indextext\new.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...