Bagikan melalui


Menggunakan PowerShell di Linux untuk mengelola SQL Server di Linux

Berlaku untuk: SQL Server - Linux

Artikel ini memperkenalkan SQL Server PowerShell dan memancang Anda melalui beberapa contoh tentang cara menggunakannya dengan PowerShell di macOS dan Linux. PowerShell sekarang menjadi proyek sumber terbuka di GitHub.

Untuk informasi selengkapnya tentang Windows PowerShell, lihat Apa itu Windows PowerShell?

Opsi editor lintas platform

Semua langkah berikut untuk PowerShell berfungsi di terminal reguler, atau Anda dapat menjalankannya dari terminal dalam Visual Studio Code atau Azure Data Studio. Vs Code dan Azure Data Studio tersedia di macOS dan Linux. Untuk informasi selengkapnya tentang Azure Data Studio, lihat Mulai Cepat: Menggunakan Azure Data Studio untuk menyambungkan dan mengkueri SQL Server. Anda mungkin juga ingin mempertimbangkan untuk menggunakan Fitur Editor PowerShell untuk Azure Data Studio.

Instal PowerShell

Untuk informasi selengkapnya tentang menginstal PowerShell di berbagai platform yang didukung dan eksperimental, lihat artikel berikut ini:

Menginstal modul SqlServer

Modul SqlServer dikelola di PowerShell Gallery. Saat bekerja dengan SQL Server, Anda harus selalu menggunakan versi SqlServer terbaru modul PowerShell.

Untuk menginstal SqlServer modul, buka sesi PowerShell dan jalankan kode berikut:

Install-Module -Name SqlServer

Untuk informasi selengkapnya tentang cara menginstal SqlServer modul dari Galeri PowerShell, lihat Menginstal modul PowerShell SQL Server.

Menggunakan modul SqlServer

Mari kita mulai dengan meluncurkan PowerShell. Jika Anda menggunakan macOS atau Linux, Buka sesi terminal di komputer Anda, dan ketik pwsh untuk meluncurkan sesi PowerShell baru. Di Windows, gunakan Win+R, dan ketik pwsh untuk meluncurkan sesi PowerShell baru.

pwsh

SQL Server menyediakan modul PowerShell bernama SqlServer. Anda dapat menggunakan SqlServer modul untuk mengimpor komponen SQL Server (penyedia dan cmdlet SQL Server) ke lingkungan atau skrip PowerShell.

Salin dan tempel perintah berikut pada perintah PowerShell untuk mengimpor SqlServer modul ke sesi PowerShell Anda saat ini:

Import-Module SqlServer

Ketik perintah berikut pada perintah PowerShell untuk memverifikasi bahwa SqlServer modul diimpor dengan benar:

Get-Module -Name SqlServer

PowerShell harus menampilkan informasi yang mirip dengan output berikut:

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

Menyambungkan ke SQL Server dan mendapatkan informasi server

Langkah-langkah berikut menggunakan PowerShell untuk menyambungkan ke instans SQL Server Anda di Linux dan menampilkan beberapa properti server.

Salin dan tempel perintah berikut ini di prompt PowerShell. Saat Anda menjalankan perintah ini, PowerShell akan:

  • Menampilkan dialog yang meminta nama host atau alamat IP instans Anda
  • Tampilkan dialog permintaan kredensial PowerShell yang meminta Anda untuk memasukkan kredensial. Anda dapat menggunakan nama pengguna SQL dan kata sandi SQL Anda untuk menyambungkan ke instans SQL Server Anda di Linux
  • Get-SqlInstance Gunakan cmdlet untuk menyambungkan ke Server dan menampilkan beberapa properti

Secara opsional, Anda hanya dapat mengganti $serverInstance variabel dengan alamat IP atau nama host instans SQL Server Anda.

# 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 harus menampilkan informasi yang mirip dengan output berikut:

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

Catatan

Jika tidak ada yang ditampilkan untuk nilai-nilai ini, koneksi ke instans SQL Server target kemungkinan besar gagal. Pastikan Anda dapat menggunakan informasi koneksi yang sama untuk menyambungkan dari SQL Server Management Studio. Kemudian tinjau rekomendasi pemecahan masalah koneksi.

Menggunakan Penyedia PowerShell SQL Server

Opsi lain untuk menyambungkan ke instans SQL Server Anda adalah menggunakan Penyedia PowerShell SQL Server. Penyedia ini memungkinkan Anda menavigasi instans SQL Server seperti saat menavigasi struktur pohon di Object Explorer, tetapi melalui baris perintah. Secara default penyedia ini disajikan sebagai PSDrive bernama SQLSERVER:\, yang dapat Anda gunakan untuk menyambungkan & menavigasi instans SQL Server yang dapat diakses akun domain Anda. Lihat Langkah-langkah konfigurasi untuk informasi tentang cara menyiapkan autentikasi Direktori Aktif untuk SQL Server di Linux.

Anda juga dapat menggunakan autentikasi SQL dengan Penyedia PowerShell SQL Server. Untuk melakukannya, gunakan New-PSDrive cmdlet untuk membuat PSDrive baru dan berikan kredensial yang tepat untuk menyambungkan.

Dalam contoh berikut, Anda akan melihat contoh cara membuat PSDrive baru menggunakan autentikasi SQL.

# 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

Anda dapat mengonfirmasi bahwa drive dibuat dengan menjalankan Get-PSDrive cmdlet.

Get-PSDrive

Setelah membuat PSDrive baru, Anda bisa mulai menavigasinya.

dir SQLonDocker:\Databases

Berikut tampilan outputnya. Anda mungkin melihat output ini mirip dengan apa yang ditampilkan SQL Server Management Studio (SSMS) di simpul Database. Ini menampilkan database pengguna, tetapi bukan database sistem.

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

Jika Anda perlu melihat semua database pada instans Anda, salah satu opsinya adalah menggunakan Get-SqlDatabase cmdlet.

Akses Database

Cmdlet penting yang perlu diketahui adalah Get-SqlDatabase. Untuk banyak operasi yang melibatkan database, atau objek dalam database, Get-SqlDatabase cmdlet dapat digunakan. Jika Anda menyediakan nilai untuk -ServerInstance parameter dan -Database , hanya satu objek database yang diambil. Namun, jika Anda hanya menentukan parameter -ServerInstance, daftar lengkap semua database pada instans tersebut akan dikembalikan.

# 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

Berikut adalah sampel apa yang dikembalikan perintah Get-SqlDatabase:

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

Memeriksa log kesalahan SQL Server

Langkah-langkah berikut menggunakan PowerShell untuk memeriksa log kesalahan yang terhubung pada instans SQL Server Anda di Linux.

Salin dan tempel perintah berikut ini di prompt PowerShell. Mungkin perlu waktu beberapa menit untuk dijalankan. Perintah ini melakukan langkah-langkah berikut:

  • Menampilkan dialog yang meminta nama host atau alamat IP instans Anda
  • Tampilkan dialog permintaan kredensial PowerShell yang meminta Anda untuk memasukkan kredensial Anda. Anda dapat menggunakan nama pengguna SQL dan kata sandi SQL Anda untuk menyambungkan ke instans SQL Server Anda di Linux
  • Gunakan cmdlet Get-SqlErrorLog untuk menyambungkan ke instans SQL Server di Linux dan mengambil log kesalahan sejak Yesterday

Secara opsional, Anda dapat mengganti $serverInstance variabel dengan alamat IP atau nama host instans SQL Server Anda.

# 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

Menjelajahi cmdlet yang saat ini tersedia di PowerShell

Sementara modul SqlServer saat ini memiliki 109 cmdlet yang tersedia di Windows PowerShell, hanya 62 dari 109 yang tersedia di PowerShell. Berikut ini adalah daftar lengkap 62 cmdlet yang saat ini tersedia. Untuk dokumentasi mendalam semua cmdlet dalam modul SqlServer, lihat referensi cmdlet SqlServer.

Perintah berikut menunjukkan kepada Anda semua cmdlet yang tersedia pada versi PowerShell yang Anda gunakan.

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-KelompokKetersediaanSql
  • Remove-SqlAvailabilityGroup
  • Switch-SqlAvailabilityGroup
  • Join-SqlAvailabilityGroup
  • Revoke-SqlAvailabilityGroupCreateAnyDatabase
  • Grant-SqlAvailabilityGroupCreateAnyDatabase
  • New-SqlAvailabilityGroupListener
  • Set-SqlAvailabilityGroupListener
  • Add-SqlAvailabilityGroupListenerStaticIp
  • Set-SqlAvailabilityReplica
  • Remove-SqlAvailabilityReplica
  • New-SqlAvailabilityReplica
  • Atur-PeranReplikaKetersediaanSqlMenjadiSekunder
  • OpsiEnkripsiCadanganSqlBaru
  • Get-SqlBackupHistory
  • Invoke-Sqlcmd
  • New-SqlCngColumnMasterKeySettings
  • Remove-SqlColumnEncryptionKey
  • Get-SqlColumnEncryptionKey
  • Remove-SqlColumnEncryptionKeyValue
  • Tambahkan-NilaiKunciEnkripsiKolomSql
  • 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