Индивидуальный запуск БД в SQL БД - PullRequest
0 голосов
/ 16 мая 2018

У нас есть сценарий, в котором несколько баз данных SQL установлены в одном экземпляре SQL (консолидация баз данных SQL)

VM Name = MyHostQAS

SQL Instance Name = MyHostQAS\NISQLSERVER2

SQL DB1 = QWA

SQL DB2 = QWB

Мое требование - написание сценария PS, который удаленно запускает / останавливает отдельную базу данных SQL (не весь экземпляр SQL)

Я попытался с sqlcmd, сначала запустив его локально (в cmd) на сервере, где установлен экземпляр SQL

sqlcmd -S MyHostQAS\NISQLSERVER2 -Q "ALTER DATABASE QWA SET online;"

Это работает нормально, и запускается QWA DB. Где, когда мы выполняем следующий запрос PS, мы получаем ошибки

Invoke-Sqlcmd -Username "admin" -Password "Admin123#" -ServerInstance "MyHostQAS\NISQLSERVER2" -Database "QWA" -Query "ALTER DATABASE QWA SET online;"

Ошибка:

Invoke-Sqlcmd: сбой входа для пользователя 'admin'. В строке: 1 символ: 1 + Invoke-Sqlcmd -Username "admin" -Password "Admin123 #" -ServerIn ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [Invoke-Sqlcmd], SqlException + FullyQualifiedErrorId: SqlExectionError, Microsoft.SqlServer.Management.PowerShell.GetScriptCommand Invoke-Sqlcmd: в строке: 1 символ: 1 + Invoke-Sqlcmd -Username "admin" -Password "Admin123 #" -ServerIn ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ParserError: (:) [Invoke-Sqlcmd], ParserException + FullyQualifiedErrorId: ExecutionFailureException, Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

Не могли бы вы помочь в устранении неполадок?

1 Ответ

0 голосов
/ 16 мая 2018

Возможно, база данных, указанная с аргументом -Database, не подключена к сети, поэтому вход в систему невозможен.Укажите системную базу данных, например master или tempdb, в качестве аргумента:

Invoke-Sqlcmd -ServerInstance MyHostQAS\NISQLSERVER2" -Database "master" -Query "ALTER DATABASE QWA SET online;"

Не уверен, что является причиной вашего требования к переключению ONLINE / OFFLINE, но вы могли бы рассмотреть возможность включения базы данных AUTO_CLOSE опция .Это автоматически освобождает ресурсы, когда база данных не используется, но за счет затрат на запуск (мало чем отличается от настройки базы данных в режиме онлайн через скрипт).

...