本节书摘来自异步社区出版社《PowerShell V3—SQL Server 2012数据库自动化运维权威指南》一书中的第2章,第2.13节,作者:【加拿大】Donabel Santos,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.13 创建视图

本方案展示了如何用PowerShell和SMO创建视图。

2.13.1 准备

我们将会使用AdventureWorks2008R2数据库的Person.Person表。

为了知道我们将会创建什么,我们给出了等价的T-SQL。

CREATE VIEW dbo.vwVCPerson
AS
SELECT TOP 100BusinessEntityID,LastName,FirstName
FROM Person.Person
WHERE PersonType = 'IN'
ORDER BYLastName
GO

2.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 100BusinessEntityID,LastName,FirstName
FROM Person.Person
WHERE PersonType = 'IN'
ORDER BYLastName
"@
$view.Create()

4.通过在PowerShell中运行下面的代码测试视图。

$result = Invoke-Sqlcmd `
-Query "SELECT * FROM vwVCPerson" `
-ServerInstance "$instanceName" `
-Database $dbName
$result | Format-Table –AutoSize

5.检查是否已创建视图。打开SSMS,展开AdventureWorks2008R2数据库的Views。

2.13.3 如何实现…

为了使用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 100BusinessEntityID,LastName,FirstName
FROM Person.Person
WHERE PersonType = 'IN'
ORDER BYLastName
"@

如果将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 100BusinessEntityID,LastName,FirstName
FROM Person.Person
WHERE PersonType = 'IN'
ORDER BYLastName
"@

这个构造可能让你会向导C类型注释,以/开头以/结束,只是使用不同的字符。

《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.13 创建视图...相关推荐

  1. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.8 创建数据库...

    本节书摘来自异步社区出版社<PowerShell V3-SQL Server 2012数据库自动化运维权威指南>一书中的第2章,第2.8节,作者:[加拿大]Donabel Santos,更 ...

  2. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.5 安装SMO

    本节书摘来自异步社区出版社<PowerShell V3-SQL Server 2012数据库自动化运维权威指南>一书中的第1章,第1.5节,作者:[加拿大]Donabel Santos,更 ...

  3. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...

    本节书摘来自异步社区出版社<PowerShell V3-SQL Server 2012数据库自动化运维权威指南>一书中的第2章,第2.19节,作者:[加拿大]Donabel Santos, ...

  4. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.2 在你开始之前:使用SQL Server和PowerShell工作...

    本节书摘来自异步社区出版社<PowerShell V3-SQL Server 2012数据库自动化运维权威指南>一书中的第1章,第1.2节,作者:[加拿大]Donabel Santos,更 ...

  5. SQL Server 2012 数据库镜像配置完整篇

    "数据库镜像"是一种提高 SQL Server 数据库的可用性的解决方案. 镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库.数据库镜像维护一个数据库的两个副本,这两个 ...

  6. 安装和卸载 MS SQL Server 2012数据库

    卸载数据库大体分三大步 (1)控制面板卸载所有SQL Server相关的软件: (2)删除本地的SQL Server相关文件; (3)删注册表. 卸载SQL Server 2012数据库 1.打开控制 ...

  7. 数据库原理与应用实验指导书 实验一:熟悉SQL Server 2012数据库管理系统

    数据库原理与应用实验指导书 实验一:熟悉SQL Server 2012数据库管理系统 实验类型: 综合性 实验要求: 必修 适用对象: 信息管理与信息系统.计算机科学与技术.软件工程.物联网工程 一. ...

  8. 微软sql服务器如何安装,Microsoft SQL Server 2012 数据库安装图解教程

    原标题:Microsoft SQL Server 2012 数据库安装图解教程 1, 当系统打开"SQL Server安装中心",则说明我们可以开始正常的安装SQL Server2 ...

  9. 介绍一下当前使用的Oracle数据库自动化运维方式

    介绍一下当前使用的Oracle数据库自动化运维方式 整体结构 12C API system 整体结构 不管12C还是11G集群使用的都是svn+httpd+RPM+运维脚本的方式. SVN:运维脚本管 ...

最新文章

  1. 通过位置跟踪模型显示PID三个参数作用
  2. Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
  3. 自己动手丰衣足食之 jQuery 数量加减插件
  4. 销售订单抬头与行项目数据的关系
  5. 实例1.2:获得应用程序主窗口指针
  6. 福州三中 计算机竞赛,重磅快讯 | 刚刚,信息学奥赛世界金牌得主钟子谦凯旋!...
  7. 6-4 开班简介1
  8. 昨晚直播后续,关于职场人的能力
  9. 大数据之路-阅读笔记
  10. windown+cpu+Keras/Tensorflow+python+yolo3训练自己的数据集
  11. 贪心算法3: 会议安排
  12. @ParserError: field larger than field limit (131072)
  13. 青蛙跳Java程序,青蛙跳台阶(java)
  14. 142个手机短信笑话
  15. 这可能是全网最全的车载OS整理
  16. 全球与中国终末期肾病(ESRD)设备市场现状及未来发展趋势(2022)
  17. java web QQ(二)
  18. 连续四年携手,2021华为手机杯围甲雨中开幕
  19. subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
  20. 分享两道阿里P7究极难度算法题,满满干货指导

热门文章

  1. r语言聚类分析_图说层次聚类分析原理和R语言实现
  2. android 自定义wifi设置在哪里,Android Wifi的设置、连接操作
  3. 为此计算机所有用户安装加载项,安装Office 2013后,无法在计算机上安装Outlook加载项...
  4. 剑指offer.机器人的运动范围
  5. 用户态和内核态的理解和区别
  6. maven之阿里云Maven镜像的使用
  7. 刘浩(专业打劫三十年)20155307的预备作业02:
  8. Spring 管理Bean(获取Bean,初始化bean事件,自动匹配ByName······等)
  9. Vue — 第二天(v-model和过滤器)
  10. java 中文字符和unicode编码值相互转化