生成创建表的脚本V2.0(PowerShell版)

来源:互联网 发布:装饰设计软件下载 编辑:程序博客网 时间:2024/06/04 19:13

之前寫有一篇有關《PowerShell应用之-生成创建表的Transact-SQL脚本》,今早再拿來應用的時候,發現無法按照指定的某一些表來生成腳本。

現在特補充這一功能,先在原來腳本開頭位置,增加一個變量$TablesList:

 

复制代码
<#===========================================#>
#
#生成创建表的脚本V2.0,包含Constraints,Indexes,Triggers


$serverInstance="PC20\SQL2005DE" 
$userName="sa"
$password="pc202005"
$DataBase="PeripheralDataCollection"
$SrciptOutputPath="E:\"
$TablesList="" #要生產腳本的表,多表使用逗号“,”分隔

<#===========================================#>
复制代码

再在

#获得数据库中的用户表
    $Tables=((New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerConnection).databases[$DataBase]).tables | Where-Object -FilterScript{$_.IsSystemObject -eq $False}

 增加篩選條件:

#获得数据库中的用户表
    $Tables=((New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerConnection).databases[$DataBase]).tables | Where-Object -FilterScript{($_.IsSystemObject -eq $False-and ( ( ($TablesList -split ","-contains $_.name) -or ( $TablesList -eq "") ) }
   

 主要增加代碼:

-and ( ( ($TablesList -split ","-contains $_.name) -or ( $TablesList -eq "") )

 

 其中 ($TablesList -split ",")  應用到表達式"-split"把$TablesList 轉換成列表形式,再通過“-contains”表達式,判斷轉換列表中是否包含有當前返回的table名。

 -or ( $TablesList -eq "") 部份只是應用于當$TablesList為空的情況。

 

 

生成创建表的脚本V2.0,完整腳本如下:

 

 

View Code

 

 

 

 測試:

 

 (完.)