《PowerShell V3——SQL Server 2012數據庫自動化運維權威指南》——2.13 創建視圖...

本節書摘來自異步社區出版社《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。

image

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類型注釋,以/開頭以/結束,只是使用不同的字符。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python刷抖音_用Python生成抖音字符視頻!

抖音字符視頻在去年火過一段時間。 反正我是始終忘不了那段極樂凈土的音樂... 這一次自己也來實現一波,做一個字符視頻出來。 主要用到的庫有cv2,pillow庫。 原視頻如下,直接抖音下載的,妥妥的水印。 不過并不影響本次的操作。 / …

變長參數

轉載自:http://blog.csdn.net/tht2009/article/details/7019635 變長參數 設計一個參數個數可變、參數類型不定的函數是可能的,最常見的例子是printf函數、scanf函數和高級語言的Format函數。在C/C中,為了通知編譯器函數的參數個數和類型可變…

第十七章 我國農業科學技術

農村改革解說(專著)第十七章 第十七章 我國農業科學技術 1、為什么說科學技術是生產力? 我們說科學技術是生產力,是因為在構成生產力的兩個主要因素中,都包含著科學技術在內。 A、生產力中人的因素是同一定的科學技術緊…

《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一一1.2 選購鏡頭時應注意的事項...

本節書摘來自異步社區出版社《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一書中的第1章,第1.2節,作者: 葛存山,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.2 選購鏡頭時應注意的事項 面對如此之多的鏡頭&#xf…

OpenCV中的神器Image Watch

Image Watch是在VS2012上使用的一款OpenCV工具,能夠實時顯示圖像和矩陣Mat的內容,跟Matlab很像,方便程序調試,相當好用。跟VS2012配合使用,簡直就是一款神器!讓我一下就愛上它了! 下面介紹一些鏈…

python異步_Python通過Thread實現異步

當long函數耗時較長時,需要程序先向下執行,這就需要異步,改寫代碼如下: import _thread import time def long(cb): print (long execute) def fun(callback): time.sleep(5) result long end callback(result) _thread.start_ne…

SAM4E單片機之旅——13、LCD之ASF初步

在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架)。通過它提供的庫,可以很快速地完成新的項目。 這次的最終目標使用ASF在LCD上顯示出文字“Hello World!”,現階段目標是點亮LCD的背光,學習目標…

《HTML5與CSS3實戰指南》——2.2 基本的HTML5模板

本節書摘來自異步社區《HTML5與CSS3實戰指南》一書中的第2章,第2.2節,作者: 【美】Estelle Weyl , Louis Lazaris , Alexis Goldstein 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.2 基本的HTML5模板 在您學習HTML5和新技術時,您…

c# Message const

typeTMsg packed recordhwnd: HWND; //窗口句柄message: UINT;//消息常量標識符wParam: WPARAM ;// 32位消息的特定附加信息lParam: LPARAM ;// 32位消息的特定附加信息time: DWORD;//消息創建時的時間pt: TPoint; //消息創建時的鼠標位置end ; 消息中有什么?是否覺…

OpenCV坐標體系的初步認識

實驗基礎本次實驗通過一個簡短的例子,主要來說明下面4個問題: 1. 坐標體系中的零點坐標為圖片的左上角,X軸為圖像矩形的上面那條水平線;Y軸為圖像矩形左邊的那條垂直線。該坐標體系在諸如結構體Mat,Rect,Point中都是適用的。&…

python爬取知乎live_Python爬蟲 - 簡單抓取百度指數

前言有點忙,沒空寫東西,這是之前寫的,加了些配圖而已 這次要爬的網站是百度指數 正文 一、分析 打開網站(百度指數),呈現出來是這樣的 如果搜索的話就需要登陸了,如果沒有什么特別頻繁的請求的話,直接登陸復…

在Visual Studio上開發Node.js程序

在Visual Studio上開發Node.js程序 原文:在Visual Studio上開發Node.js程序【題外話】 最近準備用Node.js做些東西,于是找找看能否有Visual Studio上的插件以方便開發。結果還真找到了一個,來自微軟的Node.js Tools for Visual Studio(NTVS&a…

Oracle ASM 翻譯系列第十一彈:高級知識 Offline or drop?

Offline or drop? 當一個ASM磁盤不可用時,ASM會把它從磁盤組里移除,對嗎?要看情況,通常取決于ASM版本和磁盤組的冗余級別。因為一個external冗余的磁盤組會直接被dismount,所以主要關注normal和high冗余磁盤組的情況。…

net與樹莓派的情緣-安裝與卸載MySql(五)

安裝MySql sudo apt-get install mysql-server 刪除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //這個很重要上面的其實有一些是多余的。 清理殘留數據 …

mpls工作原理通俗解釋_用這兩種方法向最終用戶解釋NLP模型的工作原理還是不錯的...

點擊上方關注,All in AI中國上周,我看了一個關于“NLP的實踐特性工程”的演講。主要是關于LIME和SHAP在文本分類可解釋性方面是如何工作的。我決定寫一篇關于它們的文章,因為它們很有趣、易于使用,而且視覺上很吸引人。所有的機器…

向往2的年代

1. JDBC 對插入大量數據如何處理? 2. JAVA反射的使用,如何獲取一個java類的某個方法? 3. 數據庫連接池(優化) 4. 分布式事務管理轉載于:https://www.cnblogs.com/dragonflyyi/p/3564843.html

C++ limits頭文件的用法(numeric_limits)

初學C的時候,對這個模板很陌生,不知道它到底是做什么用的,今天拿起《C標準程序庫》,出現了它的討論,所以決定好好研究一番。 1. numeric_limits是什么? (A)《C標準程序庫》&#xff…

三層架構——配置文件

1、配置文件是什么? 配置文件是隨安裝程序一起被安裝到計算機上的文件,里面存放著安裝好的應用程序執行時所須要的參數。 應用程序配置文件是標準的XML文件,XML標記和屬性是區分大寫和小寫的。它能夠按須要更改,開發者可使用配置文…

《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》——02-04項目范圍(Scope)管理...

本節書摘來異步社區《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》一書中的第2章,第2.4節,作者:邱毅凌,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 02-04項目范圍(Scope)管理 嵌入式…

flex(入門)之timer的使用,鍵盤,鼠標的監聽

package {import flash.display.Shape;import flash.display.Sprite;import flash.events.Event;import flash.events.KeyboardEvent;import flash.events.MouseEvent;import flash.events.TimerEvent;import flash.utils.Timer;import mx.controls.Label;//窗體大小&#xff0…