2011-09-22 38 views

Trả lời

18

Chỉ cần một cách khác để làm việc đó ... có thể là một chút nhanh hơn SQLPS để có câu trả lời nhanh.


(get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances 
+0

+1 hiệu suất tốt nhất trên máy tính của tôi! –

2
$a = "MyComputerName" 

[System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources() | ? { $_.servername -eq $a} 

Phương thức Aaron trả về phản hồi chắc chắn hơn. đọc Here về Instance.GetDataSources()

3

nhập powershell sql máy chủ phần mở rộng:

Import-Module SqlServer 

Sau đó làm các lệnh

Set-Location SQLSERVER:\SQL\localhost 
Get-ChildItem 
+0

Trên máy tính của tôi get-childitem từ SQLSERVER: \ SQL \ localhost thực sự là chậm. Tôi không thể kiểm tra trong máy tính khác ngay bây giờ. Là một hành vi bình thường? thanks –

+0

Cách tốt hơn là: get-childitem | chọn instancename –

3
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | out-null 
$mach = '.' 
$m = New-Object ('Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer') $mach 
$m.ServerInstances 
+0

Cũng có thể sử dụng '$ m = (Get-Item SQLServer: \ SQL \ $ mach) .ManagedComputer' –

4

tôi thấy rằng (cho tôi ít nhất) không có ở trên trở dụ SQL Express của tôi. Tôi có 5 trường hợp được đặt tên, 4 SQL Server đầy chất béo, 1 SQL Express. 4 đầy đủ chất béo được bao gồm trong các câu trả lời ở trên, SQL Express là không. SO, tôi đã làm một ít đào trên internet và đi qua this article bởi James Kehr, trong đó liệt kê thông tin về tất cả các trường hợp SQL Server trên một máy. Tôi đã sử dụng mã này làm cơ sở để viết hàm dưới đây.

# get all sql instances, defaults to local machine, '.' 
Function Get-SqlInstances { 
    Param($ServerName = '.') 

    $localInstances = @() 
    [array]$captions = gwmi win32_service -computerName $ServerName | ?{$_.Name -match "mssql*" -and $_.PathName -match "sqlservr.exe"} | %{$_.Caption} 
    foreach ($caption in $captions) { 
    if ($caption -eq "MSSQLSERVER") { 
     $localInstances += "MSSQLSERVER" 
    } else { 
     $temp = $caption | %{$_.split(" ")[-1]} | %{$_.trimStart("(")} | %{$_.trimEnd(")")} 
     $localInstances += "$ServerName\$temp" 
    } 
    } 
    $localInstances 
} 
0

Các namespace System.Data.Sql chứa các lớp có hỗ trợ SQL chức năng máy chủ cụ thể.

Bằng việc sử dụng không gian tên System.Data.Sql bạn có thể nhận được tất cả các trường MSSQL trên một máy sử dụng lệnh này trong các cửa sổ điện shell: [System.Data.Sql.SqlDataSourceEnumerator]::Instance.GetDataSources()

Các vấn đề liên quan