PowerShell在SQL Server 2008中一些用法
发布时间:2024-11-10
发布时间:2024-11-10
SQL 2008
PowerShell早在SQL Server 2005里就已经被集成了, 而我第一次用却在SQL Server 2008
中。今天有空总结几个实际例子出来。欢迎这方面专家来完善一下:
一、先不用SqlServerCmdletSnapin100这个SnapIn来写几个操作常用数据的脚本
SQL 2008
2. 显示SQL查询出来的数据
3. 构建数据库联接字符串
SQL 2008
4. 另一种风格的获取数据库数据
SQL 2008
二、以上是普通PowerShell通过http://操作数据库,下面列出更酷的SQL Server
集成的PowerShell命令
先看一下Invoke-Sqlcmd这个关键的cmdlet的帮助信息:
SQL 2008
13 -------------Example 1 -------------14 15 16 C:PS>Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstan 17 18 19 20 21 22 23 This example connects to a named instance of the Database Engine on a comp 24 25 26 27 28 TimeOfQuery 29 30 ----------31 32 10/7/2007 1:04:20 PM 33 34 35 36 -------------Example 2 -------------37 38 39 40 C:PS>Invoke-Sqlcmd -InputFile "C:MyFolderTestSqlCmd.sql" | Out-File -fileP 41 42 43 44 45 46 47 This example reads a file containing Transact-SQL statements and sqlcmd com 48 with the appropriate NTFS permissions. 49 50 51 52 53 54 Output sent to TestSqlCmd.rpt. 55 56
SQL 2008
57 -------------Example 3 -------------58 59 60 61 C:PS>$MyArray = "MYVAR1='String1'", "MYVAR2='String2'" 62 63 Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2;" -Var 64 65 66 67 68 69 70 This example uses an array of character strings as input to the -Variable p 71 identify the sqlcmd variables are escaped using the back-tick (`) character. 72 73 74 75 76 77 Var1 Var2 78 ------79 80 81 String1 String2 82 83 84 -------------Example 4 -------------85 86 87 88 89 C:PS>Set-Location SQLSERVER:SQLMyComputerMyInstance 90 91 Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance (G 92 93 94 95 96 97 This example uses Set-Location to navigate to the SQL Server PowerShell pro 98 SMO Server object for use as the -ServerInstance parameter of Invoke-Sqlcmd. 99 100
SQL 2008
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
TimeOfQuery ----------10/18/2007 8:49:43 PM
--------------
Example 5 --------------
C:PS>Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
This example uses the PowerShell -Verbose parameter to return the message
VERBOSE: abc
--------------
Example 6 --------------
C:PS>Set-Location SQLSERVER:SQLMyComputerDEFAULTDatabasesAdventureWorks Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
This examples uses a positional string to supply the input to the -Query paramete
SQL 2008
仔细读完这个帮助,发现,上面所有对.NET Framework中http://的操作全可以用
Invoke-Sqlcmd代替,非常简洁方便。
比如,获取home数据中所有用户表:
比如,显示home数据库中userinfo表内容:
图片看不清楚?请点击这里查看原图(大图)。
最后,补充,如果直接用SQL Server 2008的Management Studio进去打开PowerShell,
便可以直接操作类似Invoke-Sqlcmd的cmdlets,但是如果没有Management Studio怎么办
呢?
很简单,用Add-PSSnapin SqlServerCmdletSnapin100轻松搞定。