Aracılığıyla paylaş


Linux üzerinde SQL Server'ı yönetmek için Linux üzerinde PowerShell kullanma

Şunlar için geçerlidir:SQL Server - Linux

Bu makalede SQL Server PowerShell tanıtılmaktadır ve macOS ve Linux üzerinde PowerShell ile nasıl kullanılacağına ilişkin birkaç örnek verilmiştir. PowerShell artık GitHub'da açık kaynak bir projedir.

Windows PowerShell hakkında daha fazla bilgi için bkz. Windows PowerShell nedir?

Platformlar arası düzenleyici seçenekleri

PowerShell için aşağıdaki adımların tümü normal bir terminalde çalışır veya bunları Visual Studio Code veya Azure Data Studio'daki bir terminalden çalıştırabilirsiniz. Hem VS Code hem de Azure Data Studio macOS ve Linux'ta kullanılabilir. Azure Data Studio hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: SQL Serverbağlanmak ve sorgulamak için Azure Data Studio'yu kullanma. Azure Data Studio içinPowerShell Düzenleyicisi Desteği'ni de kullanmayı düşünebilirsiniz.

PowerShell yükleme

PowerShell'i desteklenen çeşitli ve deneysel platformlara yükleme hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

SqlServer modülünü yükleme

SqlServer modülü, PowerShell Galerisi'de tutulur. SQL Server ile çalışırken her zaman PowerShell modülünün SqlServer en son sürümünü kullanmanız gerekir.

Modülü yüklemek SqlServer için bir PowerShell oturumu açın ve aşağıdaki kodu çalıştırın:

Install-Module -Name SqlServer

Modülü PowerShell Galerisi'nden yükleme SqlServer hakkında daha fazla bilgi için bkz. SQL Server PowerShell modülünü yükleme.

SqlServer modülünü kullanma

PowerShell'i başlatarak başlayalım. macOS veya Linux kullanıyorsanız, bilgisayarınızda bir terminal oturumu açın ve yeni bir PowerShell oturumu başlatmak için yazın pwsh . Windows'da Win+R tuşlarına basın ve yeni bir PowerShell oturumu başlatmak için pwsh yazın.

pwsh

SQL Server adlı SqlServerbir PowerShell modülü sağlar. SQL Server bileşenlerini (SQL Server sağlayıcısı ve cmdlet'leri) bir PowerShell ortamına veya betiğine aktarmak için modülünü kullanabilirsiniz SqlServer .

Modülü geçerli PowerShell oturumunuza aktarmak için aşağıdaki komutu kopyalayıp PowerShell istemine SqlServer yapıştırın:

Import-Module SqlServer

Modülün doğru içeri aktarıldığını doğrulamak için PowerShell istemine SqlServer aşağıdaki komutu yazın:

Get-Module -Name SqlServer

PowerShell aşağıdaki çıkışa benzer bilgiler görüntülemelidir:

ModuleType Version    Name          ExportedCommands
---------- -------    ----          ----------------
Script     21.1.18102 SqlServer     {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...

SQL Server'a bağlanma ve sunucu bilgilerini alma

Aşağıdaki adımlarda, Linux üzerinde SQL Server örneğine bağlanmak ve birkaç sunucu özelliğini görüntülemek için PowerShell kullanılır.

Aşağıdaki komutları kopyalayıp PowerShell istemine yapıştırın. Bu komutları çalıştırdığınızda PowerShell şunları yapacaktır:

  • Örneğinizin ana bilgisayar adını veya IP adresini isteyen bir iletişim kutusu görüntüleme
  • Kimlik bilgilerini girmenizi isteyen PowerShell kimlik bilgisi isteği iletişim kutusunu görüntüleyin. Linux'ta SQL Server örneğine bağlanmak için SQL kullanıcı adı ve SQL parola kullanabilirsiniz
  • Get-SqlInstance cmdlet'ini kullanarak Server'e bağlanın ve birkaç özelliği görüntüleyin.

İsteğe bağlı olarak, yalnızca $serverInstance değişkenini SQL Server örneğinizin IP adresi veya ana bilgisayar adıyla değiştirebilirsiniz.

# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential

# Connect to the Server and return a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done

PowerShell aşağıdaki çıkışa benzer bilgiler görüntülemelidir:

Instance Name                   Version    ProductLevel UpdateLevel  HostPlatform HostDistribution
-------------                   -------    ------------ -----------  ------------ ----------------
your_server_instance            14.0.3048  RTM          CU13         Linux        Ubuntu

Not

Bu değerler için hiçbir şey görüntülenmezse, hedef SQL Server örneğine bağlantı büyük olasılıkla başarısız olur. SQL Server Management Studio'dan bağlanmak için aynı bağlantı bilgilerini kullanabileceğinizden emin olun. Ardından bağlantı sorunlarını giderme önerilerinigözden geçirin.

SQL Server PowerShell Sağlayıcısı'nı kullanma

SQL Server örneğine bağlanmak için bir diğer seçenek de SQL Server PowerShell Sağlayıcısıkullanmaktır. Sağlayıcıyı kullanmak, Nesne Gezgini'nde ağaç yapısında gezinir gibi, ancak komut satırında SQL Server örneğinde gezinmenize olanak tanır. Varsayılan olarak bu sağlayıcı, etki alanı hesabınızın erişimi olan SQL Server örneklerine bağlanmak & gezinmek için kullanabileceğiniz SQLSERVER:\adlı bir PSDrive olarak sunulur. Linux üzerinde SQL Server için Active Directory kimlik doğrulamasını ayarlama hakkında bilgi için bkz. Yapılandırma adımları.

SQL Server PowerShell Sağlayıcısı ile SQL kimlik doğrulamasını da kullanabilirsiniz. Bunu yapmak için cmdlet'ini New-PSDrive kullanarak yeni bir PSDrive oluşturun ve bağlanmak için uygun kimlik bilgilerini sağlayın.

Aşağıdaki örnekte, SQL kimlik doğrulaması kullanarak yeni bir PSDrive oluşturma örneği görürsünüz.

# NOTE: We are reusing the values saved in the $credential variable from the above example.

New-PSDrive -Name SQLonDocker -PSProvider SqlServer -Root 'SQLSERVER:\SQL\localhost,10002\Default\' -Credential $credential

Get-PSDrive cmdlet'ini çalıştırarak sürücünün oluşturulduğunu onaylayabilirsiniz.

Get-PSDrive

Yeni PSDrive'ınızı oluşturduktan sonra gezinmeye başlayabilirsiniz.

dir SQLonDocker:\Databases

Çıktı aşağıdaki gibi görünebilir. Bu çıkışın, SQL Server Management Studio'nun (SSMS) Veritabanları düğümünde görüntülediğine benzer olduğunu fark edebilirsiniz. Kullanıcı veritabanlarını görüntüler, ancak sistem veritabanlarını görüntülemez.

Name                 Status           Size     Space  Recovery Compat. Owner
                                            Available  Model     Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2022   Normal      209.63 MB    1.31 MB Simple       130 sa
AdventureWorksDW2022 Normal      167.00 MB   32.47 MB Simple       110 sa
AdventureWorksDW2022 Normal      188.00 MB   78.10 MB Simple       120 sa
AdventureWorksDW2022 Normal      172.00 MB   74.76 MB Simple       130 sa
AdventureWorksDW2022 Normal      208.00 MB   40.57 MB Simple       140 sa

Örneğinizdeki tüm veritabanlarını görmeniz gerekiyorsa, bir seçenek Get-SqlDatabase cmdlet'ini kullanmaktır.

Veritabanlarını Alma

Bilinmesi gereken önemli bir cmdlet Get-SqlDatabase'dır. Bir veritabanını veya veritabanındaki nesneleri içeren birçok işlem için Get-SqlDatabase cmdlet'i kullanılabilir. Hem -ServerInstance hem de -Database parametreleri için değerler sağlarsanız, yalnızca bir veritabanı nesnesi alınır. Ancak, yalnızca -ServerInstance parametresini belirtirseniz, bu örnekteki tüm veritabanlarının tam listesi döndürülür.

# NOTE: We are reusing the values saved in the $credential variable from the above example.

# Connect to the Instance and retrieve all databases
Get-SqlDatabase -ServerInstance ServerB -Credential $credential

Get-SqlDatabase komutunun döndürdüğüne ilişkin bir örnek aşağıda verilmişti:

Name                 Status           Size     Space  Recovery Compat. Owner
                                            Available  Model     Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2022   Normal      209.63 MB    1.31 MB Simple       130 sa
AdventureWorksDW2022 Normal      167.00 MB   32.47 MB Simple       110 sa
AdventureWorksDW2022 Normal      188.00 MB   78.10 MB Simple       120 sa
AdventureWorksDW2022 Normal      172.00 MB   74.88 MB Simple       130 sa
AdventureWorksDW2022 Normal      208.00 MB   40.63 MB Simple       140 sa
master               Normal        6.00 MB  600.00 KB Simple       140 sa
model                Normal       16.00 MB    5.70 MB Full         140 sa
msdb                 Normal       15.50 MB    1.14 MB Simple       140 sa
tempdb               Normal       16.00 MB    5.49 MB Simple       140 sa

SQL Server hata günlüklerini inceleme

Aşağıdaki adımlarda, Linux üzerinde SQL Server örneğinizin hata günlüklerini incelemek için PowerShell kullanılır.

Aşağıdaki komutları kopyalayıp PowerShell istemine yapıştırın. Çalışmaları birkaç dakika sürebilir. Bu komutlar aşağıdaki adımları uygular:

  • Örneğinizin ana bilgisayar adını veya IP adresini isteyen bir iletişim kutusu görüntüleme
  • Sizden kimlik bilgilerini isteyen PowerShell kimlik bilgisi isteği iletişim kutusunu görüntüleyin. Linux'ta SQL Server örneğine bağlanmak için SQL kullanıcı adı ve SQL parola kullanabilirsiniz
  • Linux'ta Get-SqlErrorLog SQL Server örneğine bağlanmak ve şu tarihten sonra hata günlüklerini almak için cmdlet'ini kullanın: Yesterday

İsteğe bağlı olarak, $serverInstance değişkenini SQL Server örneğinizin IP adresi veya ana bilgisayar adıyla değiştirebilirsiniz.

# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential

# Retrieve error logs since yesterday
Get-SqlErrorLog -ServerInstance $serverInstance -Credential $credential -Since Yesterday
# done

Şu anda PowerShell'de kullanılabilen cmdlet'leri keşfetme

SqlServer modülü şu anda Windows PowerShell'de 109 cmdlet'e sahip olsa da PowerShell'de 109 cmdlet'in yalnızca 62'si kullanılabilir. Şu anda 62 cmdlet'in tam listesi aşağıdadır. SqlServer modülündeki tüm cmdlet'lerin ayrıntılı belgeleri için SqlServer cmdlet referansınabakın.

Aşağıdaki komut, kullandığınız PowerShell sürümünde kullanılabilen tüm cmdlet'leri gösterir.

Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
Select-Object Name
  • ConvertFrom-EncodedSqlName
  • ConvertTo-EncodedSqlName
  • Get-SqlAgent
  • Get-SqlAgentJob
  • Get-SqlAgentJobHistory
  • Get-SqlAgentJobSchedule
  • Get-SqlAgentJobStep
  • Get-SqlAgentSchedule
  • Invoke-SqlAssessment
  • Get-SqlAssessmentItem
  • Remove-SqlAvailabilityDatabase
  • Resume-SqlAvailabilityDatabase
  • Add-SqlAvailabilityDatabase
  • Suspend-SqlAvailabilityDatabase
  • New-SqlAvailabilityGroup
  • Set-SqlAvailabilityGroup
  • Remove-SqlAvailabilityGroup
  • Switch-SqlAvailabilityGroup
  • Join-SqlAvailabilityGroup
  • Revoke-SqlAvailabilityGroupCreateAnyDatabase
  • Grant-SqlAvailabilityGroupCreateAnyDatabase
  • New-SqlAvailabilityGroupListener
  • Set-SqlAvailabilityGroupListener
  • Add-SqlAvailabilityGroupListenerStaticIp
  • Set-SqlAvailabilityReplica
  • Remove-SqlAvailabilityReplica
  • New-SqlAvailabilityReplica
  • Set-SqlAvailabilityReplicaRoleToSecondary
  • New-SqlBackupEncryptionOption
  • Get-SqlBackupHistory
  • Invoke-Sqlcmd
  • New-SqlCngColumnMasterKeySettings
  • Remove-SqlColumnEncryptionKey
  • Get-SqlColumnEncryptionKey
  • Remove-SqlColumnEncryptionKeyValue
  • Add-SqlColumnEncryptionKeyValue
  • Get-SqlColumnMasterKey
  • Remove-SqlColumnMasterKey
  • New-SqlColumnMasterKey
  • Get-SqlCredential
  • Set-SqlCredential
  • New-SqlCredential
  • Remove-SqlCredential
  • New-SqlCspColumnMasterKeySettings
  • Get-SqlDatabase
  • Restore-SqlDatabase
  • Backup-SqlDatabase
  • Set-SqlErrorLog
  • Get-SqlErrorLog
  • New-SqlHADREndpoint
  • Set-SqlHADREndpoint
  • Get-SqlInstance
  • Add-SqlLogin
  • Remove-SqlLogin
  • Get-SqlLogin
  • Set-SqlSmartAdmin
  • Get-SqlSmartAdmin
  • Read-SqlTableData
  • Write-SqlTableData
  • Read-SqlViewData
  • Read-SqlXEvent
  • Convert-UrnToPath