《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.13 创建视图
本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.13节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。
本方案展示了如何用PowerShell和SMO创建视图。
2.13.1 准备我们将会使用AdventureWorks2008R2数据库的Person.Person表。
为了知道我们将会创建什么,我们给出了等价的T-SQL。
CREATE VIEW dbo.vwVCPerson SELECT TOP 100 BusinessEntityID, LastName, FirstName FROM Person.Person WHERE PersonType = IN ORDER BY LastName2.13.2 如何做…
1.通过“Start | Accessories | Windows PowerShell | Windows PowerShell ISE”打开PowerShell控制台。
2.导入SQLPS模块,创建一个新的SMO服务器对象。
#import SQL Server module Import-Module SQLPS –DisableNameChecking #replace this with your instance name $instanceName = "KERRIGAN" $server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $instanceName
3.添加下面的脚本并运行。
$dbName = "AdventureWorks2008R2" $db = $server.Databases[$dbName] $viewName = "vwVCPerson" $view = $db.Views[$viewName] #if view exists, drop it if ($view) $view.Drop() $view = New-Object -TypeName Microsoft.SqlServer.Management.SMO.View –ArgumentList $db, $viewName, "dbo" #TextMode = false meaning we are not #going to explicitly write the CREATE VIEW header $view.TextMode = $false $view.TextBody = @" SELECT TOP 100 BusinessEntityID, LastName, FirstName FROM Person.Person WHERE PersonType = IN ORDER BY LastName $view.Create()
4.通过在PowerShell中运行下面的代码测试视图。
$result = Invoke-Sqlcmd ` -Query "SELECT * FROM vwVCPerson" ` -ServerInstance "$instanceName" ` -Database $dbName $result | Format-Table –AutoSize
5.检查是否已创建视图。打开SSMS,展开AdventureWorks2008R2数据库的Views。
为了使用SMO和PowerShell创建视图,你首先需要创建一个SMO View变量,它需要3个参数:database handle、view name和schema。
$view = New-Object -TypeName Microsoft.SqlServer.Management.SMO.View -ArgumentList $db, $viewName, "dbo"
可选的设置视图的所有者。
$view.Owner = "QUERYWORKS\aterra"
视图创建的核心是视图的定义。我们将TextMode属性设置为true或false。
$view.TextMode = $false $view.TextBody = @" SELECT TOP 100 BusinessEntityID, LastName, FirstName FROM Person.Person WHERE PersonType = IN ORDER BY LastName
如果将TextMode属性设置为false,意味着让SMO构造视图头部。
$view.TextMode = $false
如果将TextMode属性设置为true,意味着你需要定义视图的TextHeader属性。
$view.TextMode = $true $view.TextHeader = "CREATE VIEW dbo.vwVCPerson AS "
当都准备好后,调用视图的Create方法。
$view.Create()2.13.4 更多…
当创建数据库对象如视图、存储过程或者函数,你需要为对象的定义写代码。尽管技术上允许你将代码放在一行,但是将它们放在多行格式更具可读性。
为了嵌入代码块到PowerShell,你需要创建一个字符串。该字符串以@”开始并什么都不跟,并且以”@结束,且必须是该行开头的前两个字符。
$view.TextBody = @" SELECT TOP 100 BusinessEntityID, LastName, FirstName FROM Person.Person WHERE PersonType = IN ORDER BY LastName
这个构造可能让你会向导C类型注释,以/开头以/结束,只是使用不同的字符。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
第十二届 BigData NoSQL Meetup — 基于hbase的New sql落地实践 立即下载
相关文章
- SQL Server 登录名、服务器角色、用户名和数据库角色 --- 解释
- 使用navicat premium将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL
- sql server判断数据库、表、列、视图是否存在
- 关于SQL Server 数据库的备份
- .NET Core基于SQL Server数据库主从同步实现读写分离实战演练
- 记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
- sql server中创建数据库和表的语法
- SQL server 导入数据 (excel导入到SQL server数据库)
- SQL server 常用的数据库 DDL语言
- 使用Navicat for SQL Server新建数据库、用户及权限赋予
- SQL Server 2005数据库安装
- SQL SERVER全面优化-------Expert for SQL Server 诊断系列
- [SQL] sql server中如何查看执行效率不高的语句
- SQL Server数据库多种方式查找重复记录
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- SQL Server 2005 查看数据库表的大小 按照表大小排列
- 使用SQL Server Profiler跟踪数据库
- SQL Server 2008 R2 新建数据库
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
- Sql Server连接数据库(Windows模式及不用密码及用户名模式)
- IBM HTTP Server Plugin默认plugin-key.kdb 密钥数据库文件默认个人证书密码过期分析与解决方法
- sql server 批量备份数据库及删除N天前的备份数据
- SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数
- 【SQL Server】数据库开发指南(三)面向数据分析的 T-SQL 编程技巧与实践