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

Cara Mengaktifkan/Menonaktifkan Akses Data di SQL Server (Contoh T-SQL)

SQL Server memiliki opsi konfigurasi "akses data" yang mengaktifkan dan menonaktifkan server tertaut untuk akses kueri terdistribusi.

Jika Anda pernah mendapatkan kesalahan "Server tidak dikonfigurasi untuk AKSES DATA", Anda mungkin perlu mengaktifkan akses data untuk server tertaut yang Anda coba jalankan kueri terdistribusinya. Sebaliknya, mungkin ada saatnya Anda perlu menonaktifkan akses data.

Untuk mengaktifkan atau menonaktifkan akses data, gunakan sp_serveroption prosedur tersimpan sistem. Jalankan pada server tempat Anda ingin menjalankan kueri terdistribusi. Contoh berikut menunjukkan cara melakukannya.

Contoh 1 – Aktifkan Akses Data

Berikut cara mengaktifkan akses data.

EXEC sp_serveroption
  @server = 'sqlserver007',
  @optname = 'DATA ACCESS',
  @optvalue = 'TRUE';

Dalam hal ini, servernya disebut sqlserver007 , dan saya menyetel DATA ACCESS pilihan untuk TRUE .

Berikut cara yang lebih ringkas untuk melakukan hal yang sama:

sp_serveroption 'sqlserver007', 'DATA ACCESS', 'TRUE';

Menjalankan salah satu dari itu akan mengaktifkan akses data pada server tertaut yang ditentukan.

Omong-omong, server tertaut yang ditentukan dapat menjadi server lokal jika diperlukan. Tidak perlu menjadi server jarak jauh.

Untuk memeriksa setelan akses data, jalankan kueri terhadap sys.servers tampilan katalog sistem.

SELECT 
  name,
  is_data_access_enabled 
FROM sys.servers;

Hasil:

+--------------+--------------------------+
| name         | is_data_access_enabled   |
|--------------+--------------------------|
| sqlserver007 | 1                        |
| Homer        | 1                        |
+--------------+--------------------------+

Sekali lagi, Anda menjalankan ini terhadap server lokal – bukan server jarak jauh.

Contoh 2 – Nonaktifkan Akses Data

Untuk menonaktifkan akses data, cukup setel @optvalue ke FALSE .

EXEC sp_serveroption
  @server = 'sqlserver007',
  @optname = 'DATA ACCESS',
  @optvalue = 'FALSE';

Sekarang periksa kembali pengaturannya.

SELECT 
  name,
  is_data_access_enabled 
FROM sys.servers;

Hasil:

+--------------+--------------------------+
| name         | is_data_access_enabled   |
|--------------+--------------------------|
| sqlserver007 | 0                        |
| Homer        | 1                        |
+--------------+--------------------------+

Di Server Mana Saya Menjalankan Kode?

Jalankan kode terhadap server tempat Anda ingin menjalankan kueri terdistribusi.

Dalam contoh saya, sqlserver007 adalah nama server lokal dan Homer adalah server jarak jauh/tertaut. Jika saya ingin menjalankan kueri terdistribusi terhadap Homer , saya akan menjalankan kode terhadap sqlserver007 .

Saya tidak perlu melompat ke Homer untuk mengubah pengaturannya. Sebenarnya, itu bisa memiliki pengaturan yang berbeda dengan yang saya terapkan ke sqlserver007 .

Untuk mendemonstrasikan poin ini, inilah yang saya dapatkan jika saya membandingkan hasil server yang ditautkan dengan pengaturan sebenarnya di server jauh.

EXEC sp_serveroption
  @server = 'Homer',
  @optname = 'DATA ACCESS',
  @optvalue = 'TRUE';

SELECT 
  'From local',
  is_data_access_enabled 
FROM sys.servers
WHERE name = 'Homer'
UNION ALL
SELECT 
  'Remote setting',
  is_data_access_enabled 
FROM Homer.master.sys.servers
WHERE server_id = 0;

Hasil:

+--------------------+--------------------------+
| (No column name)   | is_data_access_enabled   |
|--------------------+--------------------------|
| From local         | 1                        |
| Remote setting     | 0                        |
+--------------------+--------------------------+

Dalam hal ini, server lokal memiliki pengaturan yang berbeda dengan rekan server tertautnya.

Dan fakta bahwa saya dapat mengambil informasi ini melalui kueri terdistribusi menunjukkan bahwa pengaturan server saya sendiri yang mengaktifkan kueri terdistribusi, bukan server jarak jauh.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki Msg 8116 "Argument data type varchar is invalid for argument 1 of session_context function" di SQL Server

  2. SQL Server SELECT di mana kolom mana pun berisi 'x'

  3. Cuplikan Basis Data SQL Server -4

  4. Mungkinkah untuk mengatur skema default dari string koneksi?

  5. Tips untuk Memindahkan Database SQL Server dari Satu Server ke Server Lain - Tutorial SQL oleh Rajan Singh