Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток помогите разобраться , я пытаюсь попросить PS чтоб он мне выполнил на 2х инстансах определенне скрипты в файлах Проблема в том , что уже мною протестировано, если в файле обычного рода запрос типа select @@servername то скрипт отпрабатывает и показывает что он выполнил, а вот если : сам скрипт для powershell + ниже текст скрипта для одного из файлов то ничего не происходит.! ((( Код: 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. и один из файлов который я хочу чтоб был отработан Код: 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. Банальное восстановление баз данных, я так понимаю , что sql cmd просто не понимает параметров этих, возможно необходимо использовать Invoke-Sqlcmd -InputFile "C:\Temp\analit.sql" кто сталкивался с работой через PS можете помочь как правильно поступить в данном случае!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 19:49 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, ошибку то оно вам какую выдает? вы используете DataReader хотя не возвращаете в резалтсет ничего. запускайте $SqlCmd.ExecuteNonQuery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 20:17 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
felix_ffREMBO, ошибку то оно вам какую выдает? Ошибок нет в том то и дело, просто прогнал и остановился PS я вот начал тестить такой режим $skript1='C:\Temp\analit.sql' $skript2='C:\Temp\kassa.sql' $SqlServer = "."; $SqlServer2 = ".\KASSA"; $SqlCatalog = "master"; $SqlLogin = "sa"; $SqlPassw = "654321" $SqlPassw2= "123456" Invoke-Sqlcmd -ServerInstance $SqlServer -Database $SqlCatalog -Username $SqlLogin -Password $SqlPassw -InputFile $skript1 | Out-File -filePath "C:\Temp\analit.log" Вроде смотрю начинает жесткий диск подгружать, как будто восстанавливает бэкапы но через время , секунд 30 выдает вот что: Код: powershell 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 22:05 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO Попробуйте к gc ($PATH) добавить | Out-String что бы получилось gc ($PATH)| Out-String Но после мучений с ExecuteReader только Invoke-Sqlcmd, работает как двуручная пила, просто и понятно. Вот что я когда-то навалял, у меня доменная авторизация, засим без юзер/пароль. Разультаты сохраняет в цсв в папке results (нужно заранее создать ее) Код: powershell 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 23:06 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, для командлета Invoke-sqlcmd укажите параметр -QueryTimeout XXX где XXX - количество секунд ожидания ответа от сервера, по умолчанию оно 30 секунд у Вас видимо весь скрипт занимает большее время выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 00:21 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBOДоброго времени суток помогите разобраться , я пытаюсь попросить PS чтоб он мне выполнил на 2х инстансах определенне скрипты в файлах А привет. Вообще mssql management studio так умеет. Мож тебе проще будет через sqlcmd это сделать? Поправил тебе скрипт. Код: 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. REMBOкто сталкивался с работой через PS можете помочь как правильно поступить в данном случае!? с твоим уровнем ps и задачами твоими - проще сформировать параметры для sqlcmd.exe и сделать через него. Код: powershell 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2017, 02:18 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудаА привет. Вообще mssql management studio так умеет. Мож тебе проще будет через sqlcmd это сделать? Поправил тебе скрипт. спасибо огромное , вроде все гладко кроме одной ошибочки The property 'CommandTimeout' cannot be found on this object. Verify that the property exists and can be set. At line:24 char:5 + $SqlConnection.CommandTimeout = 0; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException думал проблема в самой строке , попробовал изменить на QueryTimeout, ошибка выпадает такого-же рода его че надо в foreach обернуть ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:49 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, CommandTimeout это свойство объекта SQLCommand соотвественно $SqlCmd.CommandTimeout = 0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 12:58 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
ЕЕЕ, посибо. даа, а я то рыл искал по stackoverflow инфу, как иголку в стоге, )) Спасибо! Вопрос конечно остался, я проверил все работает, восстанавливает ,поправил скрипт правда по восстановлению нашел незначительную ошибку, вот, функция , я так понял которая должна возвращать мне лог визжит и ругается это конечно не особо критично, но вот если будет вдруг битый бэкап, тогда можно и проглядеть можно как-то доработать , чтоб он хоть какой-то лог показывал и сохранял он в ps кстати возвращает значения, только если sql запрос выполнился с ошибками ... Method invocation failed because [System.Data.SqlClient.SqlDataReader] does not contain a method named 'HasRows'. At line:27 char:13 + while ($objReader.HasRows()) + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Method invocation failed because [System.Data.SqlClient.SqlDataReader] does not contain a method named 'HasRows'. At line:27 char:13 + while ($objReader.HasRows()) + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 14:08 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, объект SqlDataReader не имеет метода HasRows, у него это свойство поэтому необходимо писать while ($objReader.HasRows) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 14:46 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
felix_ff, Да вы ,100 правы, все ваши советы помогли, интересно спросить, у вас, когда нибудь имели опыт ,(в PS посчитать время необходимое для выполнения команды например если идет восстановление, через менеджер процесс восстановления в процентном соотношении отображается а что-б этот ход событий передать в PS, необходимо дополнительно использовать что-то) например при копировании файлов через bittransfeer , я использую такого вида код, помогает визуально понимать через скоко произойдет сие чудо ... # вверху другой код... } $BitJobs=Import-Csv "$ScriptPath\$CSVListName" | Start-BitsTransfer -Asynchronous -Priority Normal -DisplayName CopyMyBackups while ((Get-BitsTransfer | ? { $_.JobState -ne "Transferred" }).Count -gt 0) { $totalbytes=0; $bytestransferred=0; $timeTaken = 0; foreach ($CopyMyBackups in (Get-BitsTransfer | ? { $_.JobState -eq "Transferring" } | Sort-Object CreationTime)) { $totalbytes += $CopyMyBackups.BytesTotal; $bytestransferred += $CopyMyBackups.bytestransferred if ($timeTaken -eq 0) { #Get the time of the oldest transfer aka the one that started first $timeTaken = ((Get-Date) - $CopyMyBackups.CreationTime).TotalMinutes } } # TimeRemaining = (TotalFileSize - BytesDownloaded) * TimeElapsed/BytesDownloaded if ($totalbytes -gt 0) { [int]$timeLeft = ($totalBytes - $bytestransferred) * ($timeTaken / $bytestransferred) [int]$pctComplete = $(($bytestransferred*100)/$totalbytes); Write-Progress -Status "Transferring $bytestransferred of $totalbytes ($pctComplete%). $timeLeft minutes remaining." -Activity "Dowloading files" -PercentComplete $pctComplete Start-Sleep 10 } } в принципе , это все-го лишь вопрос, мне просто интересно если функция такая есть то я б попробовал бы ее реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:11 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:48 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBO, То что вы хотите впринципе реализуемо, необходимо подписаться на событие объекта соединения так бы было на c# Код: sql 1. 2. а в PS что то типа такого: Код: sql 1. 2. 3. смысл в том что вы подписываетесь на событие InfoMessage объекта соединения, оно отлавливает все PRINT сообщения в коннекте, поскольку стандартная инструкция RESTORE возвращает в виде print-сообщений процент готовности бэкапа, оно будет транслироваться вам с оболочку. можно еще посмотреть решения с Register-ObjectEvent командлетом. или еще вариант ручная обработка в виде двух потоков в первом вы запускаете восстановление БД, во втором с какой то периодичностью ломитесь в другом соединении на сервер и смотрите во вьюху sys.dm_exec_requests по тому session_id которая восстанавливает БД, запрашивая столбец percent_complete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 16:16 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
felix_ffТо что вы хотите впринципе реализуемо, С наступившем) , Привет добрались руки до реализации плана , отображения прогресса восстановления Покопался в инете почитал предыдущие подсказки и вот на что я наткнулся Интересный , ниже скрипт , реализует восстановление с прогрессом, я лишь прошу помощи как реализовать рабочий вариант и добавить кусок который бы помог в осуществлении плана Код: powershell 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. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. Данный скриптецкий нашел на Гитхабе Но как вы видите он использует не обращения к скриптам а встроенную функцию На данный момент С вашей помошью, рабочий вариант выглядит так : Код: powershell 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. Буду благодарен за любую помощь в реализации данной задумки.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2018, 18:34 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
REMBOБуду благодарен за любую помощь в реализации данной задумки..Зарплатой поделитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 00:53 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
MindREMBOБуду благодарен за любую помощь в реализации данной задумки..Зарплатой поделитесь? Могу при встрече Пивасом угостить, а если по сущетву. то это личное, хотел сделать для себя , для лучшей визуализации происходящего.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 15:13 |
|
||
|
powershell + sql2016 помогите разобраться
|
|||
|---|---|---|---|
|
#18+
Прошу хотя бы подсказать какое решение выбрать Я так думаю что сам процесс восстановления нужно организовать. другим методом т.к. в текущем рабочем методе как писали ранее только если я подпишусь на обработчик события, возможно что-то на выходе и получу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2018, 21:46 |
|
||
|
|

start [/forum/search_topic.php?author=MishGunRU&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 739ms |
| total: | 947ms |

| 0 / 0 |
