单个数据库开始于 SQL 数据库堆叠
Individual DB start in SQL DB Stacking
我们有一个场景,多个 SQL 数据库安装在单个 SQL 实例下(SQL 数据库整合)
VM Name = MyHostQAS
SQL Instance Name = MyHostQAS\NISQLSERVER2
SQL DB1 = QWA
SQL DB2 = QWB
我的要求是编写一个 PS 脚本,远程 starts/stops 个人 SQL 数据库(不是整个 SQL 实例)
我首先尝试使用 sqlcmd 运行 在安装了 SQL 实例的服务器上本地(在 cmd 中)
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 : Login failed for user 'admin'. At line:1 char:1
+ Invoke-Sqlcmd -Username "admin" -Password "Admin123#" -ServerIn ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException
+ FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
Invoke-Sqlcmd : At line:1 char:1
+ Invoke-Sqlcmd -Username "admin" -Password "Admin123#" -ServerIn ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Sqlcmd], ParserException
+ FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
你能帮忙解决这个问题吗?
可能-Database
参数指定的数据库不在线导致登录失败。为参数指定一个系统数据库,如 master
或 tempdb
:
Invoke-Sqlcmd -ServerInstance MyHostQAS\NISQLSERVER2" -Database "master" -Query "ALTER DATABASE QWA SET online;"
不确定是什么促使您要求切换 ONLINE/OFFLINE,但您可以考虑打开数据库 AUTO_CLOSE
option。这将在数据库不使用时自动释放资源,但以启动开销为代价(与通过脚本将数据库设置为联机没有太大区别)。
我们有一个场景,多个 SQL 数据库安装在单个 SQL 实例下(SQL 数据库整合)
VM Name = MyHostQAS
SQL Instance Name = MyHostQAS\NISQLSERVER2
SQL DB1 = QWA
SQL DB2 = QWB
我的要求是编写一个 PS 脚本,远程 starts/stops 个人 SQL 数据库(不是整个 SQL 实例)
我首先尝试使用 sqlcmd 运行 在安装了 SQL 实例的服务器上本地(在 cmd 中)
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 : Login failed for user 'admin'. At line:1 char:1 + Invoke-Sqlcmd -Username "admin" -Password "Admin123#" -ServerIn ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlException + FullyQualifiedErrorId : SqlExectionError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand Invoke-Sqlcmd : At line:1 char:1 + Invoke-Sqlcmd -Username "admin" -Password "Admin123#" -ServerIn ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ParserError: (:) [Invoke-Sqlcmd], ParserException + FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
你能帮忙解决这个问题吗?
可能-Database
参数指定的数据库不在线导致登录失败。为参数指定一个系统数据库,如 master
或 tempdb
:
Invoke-Sqlcmd -ServerInstance MyHostQAS\NISQLSERVER2" -Database "master" -Query "ALTER DATABASE QWA SET online;"
不确定是什么促使您要求切换 ONLINE/OFFLINE,但您可以考虑打开数据库 AUTO_CLOSE
option。这将在数据库不使用时自动释放资源,但以启动开销为代价(与通过脚本将数据库设置为联机没有太大区别)。