主頁 > 知識庫 > PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼

PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼

熱門標簽:什么渠道可以找外呼系統(tǒng)客戶 安徽400電話辦理 湖州電銷防封卡 電話智能外呼系統(tǒng)誠信合作 金融電銷公司怎么辦理外呼系統(tǒng) 真人和電話機器人對話 信陽話務(wù)外呼系統(tǒng)怎么收費 使用電話機器人電銷是否違法 雷霆電話機器人電話

核心代碼

#配置信息
$Database	= 'DemoDB'
$Server		= '"WIN-AHAU9NO5R6U\DOG"'
$UserName	= 'kk'
$Password	= '123456'

#創(chuàng)建連接對象
$SqlConn = New-Object System.Data.SqlClient.SqlConnection

#使用賬號連接MSSQL
$SqlConn.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;user id=$UserName;pwd=$Password"

#或者以 windows 認證連接 MSSQL
#$SqlConn.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security=SSPI;"

#打開數(shù)據(jù)庫連接
$SqlConn.open()

#執(zhí)行語句方法一
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.connection = $SqlConn
$SqlCmd.commandtext = 'delete top(1) from dbo.B'
$SqlCmd.executenonquery()

#執(zhí)行語句方法二
$SqlCmd = $SqlConn.CreateCommand()
$SqlCmd.commandtext = 'delete top(1) from dbo.B'
$SqlCmd.ExecuteScalar()

#方法三,查詢顯示
$SqlCmd.commandtext = 'select name,recovery_model_desc,log_reuse_wait_desc from sys.databases'
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$set = New-Object data.dataset
$SqlAdapter.Fill($set)
$set.Tables[0] | Format-Table -Auto 

#關(guān)閉數(shù)據(jù)庫連接
$SqlConn.close()

下面是來自微軟的官方幫助文檔:Windows PowerShell:使用 PowerShell 處理數(shù)據(jù)庫

您可以使用一些 Windows PowerShell 代碼來配置您的數(shù)據(jù)庫,以存儲您所需的信息。

Don Jones

數(shù)據(jù)庫是數(shù)據(jù)存儲之王。 那么為什么不利用這些數(shù)據(jù)庫,如 SQL Server 存儲一些可以使您的生活更輕松的管理信息的呢? 您可以存儲服務(wù)器名稱、 Windows 版本、 服務(wù)包級別、 最后一個管理員登錄、 這種東西。
它是與 Windows PowerShell,都是很容易,因為您可以使用它來本機訪問 Microsoft 基礎(chǔ)數(shù)據(jù)庫功能。NET 框架。 這現(xiàn)在看上去不太像 Windows PowerShell 腳本和更多像一個 C# 程序。 不過,您所需要的代碼是很容易模板。 你可以帶我來你這里與幾個次要的改變它適應(yīng)幾乎任何情況。

用于 SQL 腳本

讓我們假設(shè)您有一個名為 SYSINFO 的 SQL Server 2008 數(shù)據(jù)庫。 數(shù)據(jù)庫已命名服務(wù)器的表。 該表已五列: 服務(wù)器名稱、 用戶名、 LastLogon、 原因和 SPVersion。 這可以是大多是簡單的文本列的 varchar 類型。
然而,使 LastLogon 日期時間列。 它現(xiàn)在使用 SQL Server 設(shè)置為其默認值的函數(shù)。 這樣,每次添加新行,它將包含當前日期和時間,而不需要您手動指定。 使原因列 varchar(MAX),如有必要,它可以包含文本,很多。
創(chuàng)建登錄腳本在組策略對象 (GPO),將 GPO 鏈接到您的服務(wù)器所在的組織單位 (OU)。 每次有人登錄到服務(wù)器運行該腳本時。 使用 Windows PowerShell 腳本,您可以在任何裝有 Windows PowerShell 2.0 的計算機上的東西。 您需要確保您已經(jīng)從 Windows Server 2008 R2 (或 Windows 7 遠程服務(wù)器管理工具包或寄宿) 來編輯該 GPO 時有基于 Windows PowerShell 登錄腳本選項的 GPO 模板。
這里是您需要的腳本。 請注意我使用 ↵ 來指示應(yīng)在此按 enter 鍵。 僅按 enter 鍵時你來該符號,如果您希望它能正常工作 (您可以將復(fù)制的 HTML 使用符號 crarr ; 實體):

$reason = Read-Host 'Reason are you logging on'↵
$reason.replace("'","''")↵

這兩行提示有人為他們正在登錄到服務(wù)器的原因 — — 這一點是相當重要的跟蹤。 替換功能會將任何單引號替換使用兩個單引號,確保我們稍后構(gòu)建的 SQL 語句將正常工作。 這并不被為了故意 SQL 注入式攻擊的防范。 畢竟,我們談?wù)撌苄湃蔚墓芾韱T,正確嗎?

此線將檢索操作系統(tǒng)的信息:

$os = Get WmiInfo Win32_OperatingSystem↵

在這里重要的數(shù)據(jù)是服務(wù)器的名稱和其當前的服務(wù)包版本。 您可能還需要 BuildNumber 屬性,告訴您您正在處理的 Windows 版本。
此線加載的一部分。負責處理數(shù)據(jù)庫的.NET 框架:

[assembly.reflection]::loadwithpartialname ('System.Data ') ↵

這些行創(chuàng)建新的數(shù)據(jù)庫連接:

$conn = New-Object System.Data.SqlClient.SqlConnection↵
$conn.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=SYSINFO;Integrated Security=SSPI;"↵

如果您不使用 SQL Server 2008,連接字符串可能會有點不同 (訪問ConnectionStrings.com來查找各種不同的數(shù)據(jù)庫的連接字符串示例):

$conn.open () ↵

現(xiàn)在該連接是打開并可供使用。

這兩條線創(chuàng)建是我將使用 SQL 服務(wù)器發(fā)送查詢的 SQL 命令。 我已經(jīng)設(shè)置其連接屬性設(shè)置為"打開",以便 Windows PowerShell 已實際發(fā)送命令的方式:

$cmd = New-Object System.Data.SqlClient.SqlCommand↵
$cmd.connection = $conn↵

這所有辛勤的工作。 它創(chuàng)建一個 SQL"插入"查詢到數(shù)據(jù)庫表中插入新行。 請注意我使用 – f 格式設(shè)置運算符將四條信息插入到查詢。 信息被插入 {x} 占位符,它提供如下操作員的逗號分隔列表中的順序相同:

$cmd.commandtext = "INSERT INTO servers (servername,username,spversion,reason) VALUES('{0}','{1}','{2}','{3}')" -f
$os.__SERVER,$env.username,$os.servicepackmajorversion,$reason↵

現(xiàn)在我會執(zhí)行查詢,并關(guān)閉數(shù)據(jù)庫連接:

$cmd.executenonquery()↵
$conn.close()↵

請確保您關(guān)閉該連接或你得打你一頓頭的后面的數(shù)據(jù)庫管理員。 您將看到對ConnectionStrings.com,您可以訪問大量的數(shù)據(jù)庫。
如果您使用 SQL Server 以外,你得改改"OleDb"對象名稱"SqlClient"部分。 此外,它已不推薦使用基于文件的數(shù)據(jù)庫訪問像。 為之一,以獲取驅(qū)動程序,你得要上安裝,訪問您的服務(wù)器,這將是一個可怕的想法。 另一種,這些數(shù)據(jù)庫的性能達不到您將需要為此工作好的水平。

如果你沒有可以承載數(shù)據(jù)庫的 SQL Server 實例,獲取一份快遞版安裝的地方。 這足夠低的這種技術(shù)將可能產(chǎn)生的交通。
很明顯,您可以修改此做相當多的技術(shù)。 可以將列添加到數(shù)據(jù)庫,并讓您的腳本收集其他信息。 您需要做的一件事是精通 SQL 語言本身。 您不需要的大師,但你要能夠編寫基本的查詢。
如果您需要上 (在此級別工作的幾乎相同每個主要的數(shù)據(jù)庫平臺) 的 SQL 語言入門,簽出這視頻系列創(chuàng)建行業(yè)標準 SQL 語言提供了完整的教程。 它還包括像 SQL Server、 Oracle、 MySQL 平臺之間的主要差異,等等。
這里是整個腳本:

$reason = Read-Host 'Reason are you logging on'↵
$reason.replace("'","''")↵
$os = Get-WmiInfo Win32_OperatingSystem↵
[assembly.reflection]::loadwithpartialname('System.Data')↵
$conn = New-Object System.Data.SqlClient.SqlConnection↵
$conn.ConnectionString = "Data Source=SQLSERVER;Initial Catalog=SYSINFO;Integrated Security=SSPI;"↵
$conn.open()↵
$cmd = New-Object System.Data.SqlClient.SqlCommand↵
$cmd.connection = $conn↵
$cmd.commandtext = "INSERT INTO servers (servername,username,spversion,reason) VALUES('{0}','{1}','{2}','{3}')" -f $os.__SERVER,$env.username,$os.servicepackmajorversion,$reason↵
$cmd.executenonquery()↵
$conn.close()↵

您可能感興趣的文章:
  • Powershell訪問SQL Server數(shù)據(jù)庫代碼實例
  • PowerShell腳本開發(fā)嘗試登錄SQL Server
  • powershell玩轉(zhuǎn)SQL SERVER所有版本的方法

標簽:濟南 鶴崗 山南 六盤水 運城 湛江 岳陽 德州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼》,本文關(guān)鍵詞  PowerShell,連接,SQL,SERVER,數(shù)據(jù)庫,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于PowerShell連接SQL SERVER數(shù)據(jù)庫進行操作的實現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章