Get-SqlErrorLog
取得 SQL Server 錯誤記錄檔。
語法
Get-SqlErrorLog
[-Timespan <TimeSpan>]
[-Before <DateTime>]
[-After <DateTime>]
[-Since <SinceType>]
[-Ascending]
[[-Path] <String[]>]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Get-SqlErrorLog
[-Timespan <TimeSpan>]
[-Before <DateTime>]
[-After <DateTime>]
[-Since <SinceType>]
[-Ascending]
[[-ServerInstance] <String[]>]
[-Credential <PSCredential>]
[-ConnectionTimeout <Int32>]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Get-SqlErrorLog
[-Timespan <TimeSpan>]
[-Before <DateTime>]
[-After <DateTime>]
[-Since <SinceType>]
[-Ascending]
[-InputObject] <Server[]>
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Description
Get-SqlErrorLog Cmdlet 會取得 SQL Server 錯誤記錄檔。
此 Cmdlet 支援下列作業模式,以取得錯誤記錄檔:
- 傳遞 SQL Server 的實例。
- 指定 SQL Server 實例的 Path 參數。
- 在有效的內容中叫用 Cmdlet。
範例
範例 1:取得在特定時間範圍內產生並具有搜尋字詞的所有記錄
PS C:\> CD SQLSERVER:\SQL\MyServer\MyInstance
PS SQLSERVER:\SQL\MyServer\MyInstance> Get-SqlErrorLog -Since Yesterday | Where-Object { $_.Text -match 'Error' } | Format-Table
Date Source Text ArchiveNo ServerInstance
---- ------ ---- --------- --------------
6/16/2016 6:04:20 PM Logon Error: 17828, Severity: 20, State: 4. 0 MyServer\MyInstance
第一個命令會將目錄變更為 SQL Server 實例。
範例 2:取得在特定時間範圍內產生的所有記錄
PS C:\> CD SQLSERVER:\SQL\MyServer\MyInstance
PS SQLSERVER:\SQL\MyServer\MyInstance> Get-SqlErrorLog -Timespan '05:30:00' | Format-Table
Date Source Text
---- ------ ----
6/17/2016 12:00:00 AM spid26s This instance of SQL Server has been using a process ID of 21520 since 6/10/2016 3:56:...
6/16/2016 6:04:20 PM Logon The prelogin packet used to open the connection is structurally invalid; the connectio...
6/16/2016 6:04:20 PM Logon Error: 17828, Severity: 20, State: 4.
第一個命令會將目錄變更為 SQL Server 實例。
範例 3:取得在特定時間範圍內產生的所有記錄,並依遞增排序和分組
PS C:\> CD SQLSERVER:\SQL\MyServer
PS SQLSERVER:\SQL\MyServer> ls | Get-SqlErrorLog -After '2016-05-10' -Before '2016-06-18' -Ascending | ? { $_.Text -match 'Login failed' } | Group-Object -Property ServerInstance
Count Name Group
----- ---- -----
1 MyServer {{ Date = 6/17/2016 2:00:04 AM, Source = Logon, Text = Login failed for user ...
2 MyServer\INST1 {{ Date = 6/10/2016 3:58:46 PM, Source = Logon, Text = Login failed for user
第一個命令會將目錄變更為 SQL Server 實例。
參數
-AccessToken
用來向 SQL Server 驗證的存取令牌,作為使用者/密碼或 Windows 驗證的替代方案。
例如,這可用來使用 Service Principal
或 Managed Identity
來連線到 SQL Azure DB
和 SQL Azure Managed Instance
。
要使用的參數可以是字串,表示令牌或 PSAccessToken
物件,如執行 Get-AzAccessToken -ResourceUrl https://database.windows.net
所傳回。
此參數是模組 v22 的新功能。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-After
指定此 Cmdlet 只會取得指定時間之後產生的錯誤記錄。
如果您指定 Before 參數,則此 Cmdlet 會取得指定之前產生的所有錯誤記錄。
如果您想要使用 Since 或 Timespan 參數,請勿指定此參數。
格式是根據 .Net System.DataTime.Parse(的規則來定義。
類型: | DateTime |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Ascending
指出 Cmdlet 會依記錄日期以遞增順序排序錯誤記錄的集合。 如果您未指定此參數,Cmdlet 會以遞減順序排序錯誤記錄。
當此 Cmdlet 取得多個來源的錯誤記錄時,排序會套用至來自相同來源的所有錯誤記錄。 此 Cmdlet 取得的記錄會先依來源分組,然後依記錄日期排序。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Before
指定此 Cmdlet 只會取得指定時間之前產生的錯誤記錄。
如果指定 After 參數,Cmdlet 預設為現在,這表示 Cmdlet 會取得在您為此參數指定之後產生的所有錯誤記錄,直到目前時間為止。
如果您想要使用 Since 或 Timespan 參數,請勿指定此參數的值。 格式是根據 .Net System.Datatime.Parse(的規則來定義。
類型: | DateTime |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ConnectionTimeout
指定要在逾時失敗前等候伺服器連線的秒數。 逾時值必須是介於 0 到 65534 之間的整數。 如果指定了 0,連線嘗試就不會逾時。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Credential
指定 PSCredential 物件,用來指定具有執行這項作業許可權之 SQL Server 登入的認證。
類型: | PSCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Encrypt
線上到 SQL Server 時要使用的加密類型。
此值會對應至 Microsoft.Data.SqlClient 驅動程式之 SqlConnection 物件上的 Encrypt
屬性 SqlConnectionEncryptOption
。
在模組的 v22 中,預設值為 Optional
(為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 「強制」,這可能會為現有的腳本建立重大變更。
此參數是模組 v22 的新功能。
類型: | String |
接受的值: | Mandatory, Optional, Strict |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-HostNameInCertificate
用來驗證 SQL Server TLS/SSL 憑證的主機名。 如果您的 SQL Server 實例已啟用強制加密,而且您想要使用主機名/shortname 連線到實例,則必須傳遞此參數。 如果省略此參數,則必須將完整功能變數名稱 (FQDN) 傳遞至 -ServerInstance 才能連線到啟用強制加密的 SQL Server 實例。
此參數是模組 v22 的新功能。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定伺服器物件做為陣列,此 Cmdlet 會從中取得記錄的目標實例。
類型: | Server[] |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Path
指定此 Cmdlet 執行作業之 SQL Server 實例的路徑做為陣列。 如果您未指定此參數的值,Cmdlet 會使用目前的工作位置。
類型: | String[] |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProgressAction
決定 PowerShell 如何回應腳本、Cmdlet 或提供者所產生的進度更新,例如 Write-Progress Cmdlet 所產生的進度列。 Write-Progress Cmdlet 會建立顯示命令狀態的進度列。
類型: | ActionPreference |
別名: | proga |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ServerInstance
指定 SQL Server 實例的名稱做為陣列。 針對預設實例,只指定計算機名稱:MyComputer。 針對具名實例,請使用 ComputerName\InstanceName 格式。
類型: | String[] |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Since
指定 Timespan 參數的縮寫。
如果您想要使用 After 或 Before 參數,請勿指定此參數。
此參數可接受的值為:
- 午夜 (取得午夜後產生的所有記錄檔)
- 昨天(取得過去 24 小時內產生的所有記錄)。
- LastWeek (取得上周產生的所有記錄檔)
- LastMonth (取得上個月產生的所有記錄)
類型: | SinceType |
接受的值: | Midnight, Yesterday, LastWeek, LastMonth |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Timespan
指定此 Cmdlet 篩選出超出時間範圍之錯誤記錄檔的 TimeSpan 物件。
此參數的格式為 d.HH:mm:ss。
如果您使用 Since、After 或 Before 參數,則會忽略此參數。
類型: | TimeSpan |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-TrustServerCertificate
指出通道是否會在略過憑證鏈結以驗證信任時加密。
在模組的 v22 中,預設值為 $true
(為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 『$false』,這可能會為現有的腳本建立重大變更。
此參數是模組 v22 的新功能。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
System.String[]
Microsoft.SqlServer.Management.Smo.Server[]