Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tambahkan Login Server Tertaut di SQL Server (Contoh T-SQL)

Pada artikel ini, saya membuat login untuk server tertaut di SQL Server. Dalam hal ini saya menggunakan Transact-SQL (sebagai lawan menggunakan GUI seperti SSMS).

Untuk membuat login untuk server tertaut, gunakan sp_addlinkedsrvlogin prosedur tersimpan sistem.

Sintaks

Sintaksnya seperti ini:

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'   
     [ , [ @useself = ] { 'TRUE' | 'FALSE' | NULL } ]   
     [ , [ @locallogin = ] 'locallogin' ]   
     [ , [ @rmtuser = ] 'rmtuser' ]   
     [ , [ @rmtpassword = ] 'rmtpassword' ]

Contoh berikut menunjukkan cara kerjanya. Untuk penjelasan lebih rinci dari setiap argumen, lihat dokumentasi resmi Microsoft.

Contoh 1 – Tambahkan Login untuk Server Tertaut

Berikut ini contoh menambahkan login SQL Server yang disebut Maggie untuk server tertaut yang disebut Homer:

EXEC sp_addlinkedsrvlogin 
    @rmtsrvname=N'Homer', 
    @useself=N'FALSE', 
    @locallogin=NULL, 
    @rmtuser=N'Maggie', 
    @rmtpassword=N'BigStrong#Passw0rd';

Jalankan ini di server lokal setelah Anda membuat server tertaut. Anda akan memerlukan login yang sesuai dengan kredensial yang sama di server jarak jauh yang sebenarnya.

Contoh 2 – Sertakan Server Tertaut

Demi kelengkapan, ini dia lagi, tapi kali ini saya buat link servernya dulu:

EXEC sp_addlinkedserver 
    @server=N'Homer', 
    @srvproduct=N'', 
    @provider=N'MSOLEDBSQL', 
    @datasrc=N'172.17.0.2',
    @catalog='Music';

EXEC sp_addlinkedsrvlogin 
    @rmtsrvname=N'Homer', 
    @useself=N'FALSE', 
    @locallogin=NULL, 
    @rmtuser=N'Maggie', 
    @rmtpassword=N'BigStrong#Passw0rd';

Selama server tertaut (jarak jauh) yang sebenarnya memiliki login dengan kredensial yang sama, server lokal akan dapat masuk ke server tertaut.

Contoh 3 – Tambahkan Login/Pengguna di Server Jarak Jauh

Seperti yang disebutkan, Anda harus memastikan ada login yang sesuai di server jarak jauh. Anda juga harus memastikan bahwa login ini dipetakan ke pengguna database dengan izin yang sesuai.

Jadi dalam hal ini, kita dapat membuat login di server jauh dengan melompat ke server jauh dan menjalankan ini:

CREATE LOGIN Maggie
    WITH PASSWORD = 'BigStrong#Passw0rd';

USE Music;
CREATE USER Maggie FOR LOGIN Maggie;

GRANT SELECT ON DATABASE::Music TO Maggie; 

Ini membuat login yang disebut Maggie dan pengguna database yang sesuai yang disebut Maggie. Itu juga memberikan SELECT izin ke Maggie untuk database Musik.

Sekarang setelah saya selesai melakukannya, setiap kueri terdistribusi yang menggunakan login ini akan dibatasi ke database Musik.

Alternatif untuk menggunakan GRANT SELECT ON DATABASE , adalah menambahkan pengguna ke db_datareader peran basis data tetap, atau mungkin ke peran khusus.

Jika Anda membuat server tertaut sebelum Anda membuat login dan pengguna basis data di server jauh, Anda mungkin perlu menghapus server tertaut dan membuatnya lagi. Jika demikian, Anda dapat menjatuhkannya seperti ini:

EXEC sp_dropserver 'Homer', 'droplogins';

Setelah dijatuhkan, Anda dapat membuat server tertaut, dan login terkaitnya lagi.

Apakah Saya Benar-Benar Membutuhkan Login Server Tertaut?

Mungkin Anda bahkan tidak perlu menambahkan login seperti contoh di atas.

Saat pertama kali membuat server tertaut di SQL Server, pemetaan default antara semua login di server lokal dan login jarak jauh di server tertaut dibuat secara otomatis. SQL Server menggunakan kredensial login lokal saat menyambung ke server tertaut atas nama login.

Jadi, jika login lokal Anda memiliki login yang sesuai di server tertaut, dengan kredensial yang sama, dan memiliki izin yang sesuai, Anda siap melakukannya. Tidak perlu menambahkan login untuk server tertaut.

Karena itu, Anda mungkin memiliki alasan lain untuk menambahkan login terpisah, seperti menambahkannya untuk pengguna lain.

Anda mungkin juga ingin membuat pemetaan login untuk satu pengguna lokal, dalam hal ini Anda dapat menggunakan @locallogin argumen untuk menentukan login lokal yang akan dipetakan.

Lihat Cara Kerja Login di Server Tertaut untuk contoh berbagai login lokal yang mencoba mengakses login server tertaut dalam skenario yang berbeda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Cara memilih semua hari dalam rentang tanggal meskipun tidak ada data selama beberapa hari

  2. Sintaks salah di dekat 'GO'

  3. Bagaimana cara memasukkan catatan dan mengembalikan ID yang baru dibuat menggunakan SqlCommand tunggal?

  4. Cara Mengirim Email dari SQL Server (T-SQL)

  5. Pemantauan TempDB SQL Server dengan Menggunakan Tampilan Manajemen Dinamis (DMV)