【IT168 技术】在SQL Server之前的版本中,微软提供了一个sqlps.exe的实用工具。在SQL Server 2012中,SQLPS以模块的形式存在。SQLPS.exe虽然继续存在于SQL Server 2012,但基本上需要以模块形式调用。本文介绍了如何使用SQLPS模块以及如何通过Windows PowerShell访问SQL组件和功能。
注意:你可以从这个网站下载 http://www.microsoft.com/sqlserver.
Pre-Requisite(先决条件)
使用SQLPS的先决条件如下:
A.PowerShell 2.0:它包含在Windo
ws 2008中,可以通过Windows服务功能开启。
B.SQLPS module:它包含在SQL Server 2012中,如果安装成功,将会在PowerShell中看到。成功安装后,你所要做的就是导入SQLPS模块。
C.Execution-Policy:PowerShell的执行策略不应设置为“Unrestricted”。
第一步:
从Windows开始菜单中以管理员身份启动PowerShell,如下图所示:
▲使用管理员身份启动PowerShell
这将打开一个新的PowerShell窗口,如下:
▲新的PowerShell窗口
第二步:
设置执行策略“Unrestricted”如下:
▲设置执行策略
第三步:
列出PowerShell环境中所有可用模块。
在Windows PowerShell提示符下键入Get-Module –ListAvailable,得到如下结果:
▲Get-Module –ListAvailable
如果你没有看到SQLPS模块列表,请在功能包里安装SQL Server 2012 PowerShell扩展。
第四步:
导入SQLPS模块,这将使得所有SQLPS的相关命令在当前PowerShell中可用,命令为:Import-Module SQLPS,结果如下:
▲导入SQLPS模块
可用通过指定“DisableNameChecking”参数来隐藏警告信息。
例如:Import-Module sqlps –DisableNameChecking
第五步:
可使用如下命令列出在SQLPS模块中可用的命令
Get-Command -CommandType cmdlet -Module sqlps | group-object -Property verb,结果如下:
${PageNumber}第六步:
列出所有在SQLPS模块中可用的命令和功能。
命令为:Get-command –module SQLPS。
你可以看到所列出的命令行:
Add-SqlAvailabilityDatabase
Add-SqlAvailabilityGroupListenerStaticIp
Backup-SqlDatabase
Convert-UrnToPath
Decode-SqlName
Disable-SqlAlwaysOn
Enable-SqlAlwaysOn
Encode-SqlName
Invoke-PolicyEvaluation
Invoke-Sqlcmd
Join-SqlAvailabilityGroup
New-SqlAvailabilityGroup
New-SqlAvailabilityGroupListener
New-SqlAvailabilityReplica
New-SqlHADREndpoint
Remove-SqlAvailabilityDatabase
Remove-SqlAvailabilityGroup
Remove-SqlAvailabilityReplica
Restore-SqlDatabase
Resume-SqlAvailabilityDatabase
Set-SqlAvailabilityGroup
Set-SqlAvailabilityGroupListener
Set-SqlAvailabilityReplica
Set-SqlHADREndpoint
SQLSERVER:
Suspend-SqlAvailabilityDatabase
Switch-SqlAvailabilityGroup
Test-SqlAvailabilityGroup
Test-SqlAvailabilityReplica
Test-SqlDatabaseReplicaState
当导入SQLPS模块后,SQL Server将会像文件系统一样可进行浏览。我们可以通过CD(Set-Location)命令和DIR(Get-ChildItem)命令浏览SQL Server。
例如,键入DIR,得到如下结果:
▲使用CD和DIR命令浏览SQL
注意:上面所示USTESTSQL01是主机名,SQLENG是实例名。
我们可以使用DIR命令列出实例中所有可用的文件夹。
例如,键入DIR,得到如下结果:
▲使用DIR命令列出所有可用的文件夹
如果想列出所有服务器级角色,请使用如下命令:
CD ROLES
DIR
结果如下所示:
▲服务器级角色
如果你想看到所有从NT开始的用户名,只需一步,只需在Logins文件夹中使用例如Get-Childitem的命令与通配符连用即可,如下所示:
CD..
CD Logins
DIR NT*
▲查询所有从NT开始的登录
如果你想执行一些TSQL,可以使用Invoke-SQLCMD命令,命令为:
Invoke-SQLCMD "select @@version;select db_name()"
结果如下:
你也可以使用备份SQLDatabase的命令备份数据库,例如:
Invoke-SQLCMD "backup database master to disk ='c:\bak\master.bak'",结果如下:
命令为:Backup-SqlDatabase -ServerInstance USTESTSQL01\SQLENG -Database Master
如果你想对cmdlets有更多的了解,请使用如下所示的Get-Help命令:
Get-Help invoke-sqlcmd –full
Get-Help Backup-SqlDatabase –full
结果如下所示:
结论
如开篇所述,本文说明了如何利用SQLPS模块以及如何通过Windows PowerShell访问SQL组件和功能。