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

SQL Server 2016

Rilis Community Technical Preview (CTP) dari SQL Server 2016, telah memberi kami kesempatan untuk mencoba beberapa fitur baru yang akan tersedia di versi yang akan datang.

Penutupan Data Dinamis

Fitur ini memungkinkan Anda untuk melindungi data rahasia dari pengguna yang tidak berwenang untuk melihatnya dengan mengaburkan sebagian atau seluruh isi kolom. Misalnya, Anda mungkin mengekspos bagian dari nomor kartu kredit untuk memungkinkan staf meja bantuan melihat empat digit terakhir; Anda dapat memilih untuk mengaburkan data yang disimpan di kolom gaji sepenuhnya.

Jika Anda menggunakan SQL Server CTP 2.0, Anda perlu menjalankan perintah ini untuk mengaktifkan penyembunyian data dinamis:

DBCC TRACEON(209,219,-1)

Jangan gunakan perintah ini jika Anda menggunakan versi CTP yang lebih baru, karena ini akan menonaktifkan penyembunyian data dinamis. (Jika Anda menggunakan CTP 2.0 dan Anda tidak jalankan perintah DBCC ini atau Anda menjalankan CTP2.1+ dan Anda melakukannya jalankan perintah ini, Anda akan mendapatkan kesalahan "Sintaks salah di dekat 'masked'" saat mencoba mendefinisikan topeng dinamis untuk sebuah kolom.

SQL berikut membuat tabel yang menggunakan penyembunyian data dinamis untuk mengaburkan konten tiga kolom. Isi CreditCard kolom sebagian terbuka. Apa yang terungkap di Phone kolom yang tersisa untuk masker data dinamis. Default untuk kolom string adalah "xxxx". Default untuk kolom numerik adalah "0". Email kolom menggunakan topeng data dinamis yang secara khusus diarahkan ke konten kolom itu.

CREATE TABLE Pelanggan (ID int IDENTITY PRIMARY KEY, Nama varchar(100) NOT NULL, CreditCard varchar(9) MASKED WITH (FUNCTION ='partial(0,"xxxxx",4)') NULL, Phone varchar(12 ) MASKED WITH (FUNCTION ='default()') NULL, Email varchar(100) MASKED WITH (FUNCTION ='email()') NULL);INSERT INTO Customer VALUES('A Name', '111222333', '01937 860000 ', 'someone@somedomain')

Menggunakan isql program yang disertakan dalam distribusi driver SQL Server ODBC kami, kami masuk dengan akun SQL Server yang tidak diizinkan untuk melihat konten kolom bertopeng:

$ /usr/local/easysoft/unixODBC/bin/isql.sh -v SQLSERVER_2016 myuser mypassword+--------------------------- ------------+| Terhubung! || || sql-pernyataan || bantu [namatabel] || berhenti || |+----------------------------------------+SQL> pilih * dari pelanggan+-- --+-------+-----------+-------+---------------+| ID | Nama | Kartu Kredit| Telepon | Email |+----+-------+------------+-------+------------- -+| 1 | Sebuah Nama| xxxxx2333 | xxxx | [email protected] |+----+-------+-----------+-------+---------- -----+

Kami kemudian masuk dengan akun yang memiliki hak istimewa yang memadai:

$ /usr/local/easysoft/unixODBC/bin/isql.sh -v SQLSERVER_2016 dengan kata sandi saya+--------------------------- ------------+| Terhubung! || || sql-pernyataan || bantu [namatabel] || berhenti || |+----------------------------------------+SQL> pilih * dari pelanggan+-- --+-------+-----------+--------------+------------ ------------+| ID | Nama | Kartu Kredit| Telepon | Email |+----+-------+------------+--------------+------- -----------------+| 1 | Sebuah Nama| 111222333 | 01937 860000 | [email protected] |+----+-------+-----------+--------------+--- ---------------------+

Dukungan JSON

JavaScript Object Notation (JSON) adalah format teks yang memfasilitasi pertukaran data. Karena semakin banyak pengembang aplikasi yang mengadopsi JSON sebagai format data pilihan mereka, kebutuhan akan database yang ramah-JSON semakin meningkat. Akibatnya, beberapa database NoSQL telah memilih JSON sebagai format data utama mereka. Salah satu database tersebut adalah MongoDB.

Pada mesin uji kami, kami menggunakan dukungan JSON SQL Server 2016 untuk bertukar data antara SQL Server dan MongoDB.

Kami menggunakan program salinan massal (bcp) yang disertakan dalam distribusi driver SQL Server ODBC kami untuk mengekspor data pelanggan yang kami buat sebelumnya dalam format JSON. (Perintah bcp terhubung ke SQL Server sebagai "sa" sehingga data di kolom yang di-mask terekspos.)

$ cd /usr/local/easysoft/sqlserver/bcp$ ./bcp "select * from customer for json auto" queryout customer.json -U sa -cPassword:Starting copy...1 row berhasil disalin massal ke berkas tuan rumah. Total yang diterima:1Waktu Jam (ms.) Total :12129 Rata-rata :0,082 baris per detik$ lebih banyak customer.json[{"ID":1,"Name":"A Name","CreditCard":"111222333","Telepon ":"01937 860000", "Email":"someone@somedomain"}]

Kami kemudian mengimpor data JSON ke MongoDB:

$ cd /opt/mongodb-linux-x86_64-ubuntu1404-3.0.7/bin$ ./mongoimport --db=SQLServer --collection=Pelanggan --file=customer.json --jsonArray$ terhubung ke:localhost mengimpor 1 dokumen
$ ./mongoMongoDB versi shell:3.0.7menghubungkan ke:test> menggunakan SQLServerswitched ke db SQLServer> db.Customer.find(){ "_id" :ObjectId("56334017f6df768ab87f2e8c"), "ID" :1, "Name " :"Nama", "Kartu Kredit" :"111222333", "Telepon" :"01937 860000", "Email" :"someone@somedomain" }>

Keamanan Tingkat Baris

Dengan fitur Keamanan Tingkat Baris, SQL Server 2016 dapat membatasi akses ke data baris berdasarkan login SQL Server. Keamanan Tingkat Baris transparan bagi pengguna SQL Server, mereka tidak menyadari bahwa baris yang tidak diizinkan untuk dilihat sedang difilter dari hasil kueri mereka.

Untuk mencoba fitur ini dengan driver SQL Server ODBC kami, kami mereproduksi contoh keamanan tingkat baris Microsoft. Kami melakukan ini dalam database yang memiliki pengguna SQL Server bernama "Sales1" dan "Sales2", yang memiliki SELECT hak istimewa.

Kami membuat dan mengisi tabel dengan beberapa data penjualan. SalesRep kolom menyimpan nama pengguna perwakilan penjualan yang relevan.

BUAT TABEL Penjualan( OrderID int, SalesRep sysname, Product varchar(10), Qty int);MASUKKAN NILAI Penjualan (1, 'Sales1', 'Valve', 5), (2, 'Sales1', 'Wheel' , 2), (3, 'Penjualan1', 'Katup', 4),(4, 'Penjualan2', 'Bracket', 2), (5, 'Penjualan2', 'Roda', 5), (6, ' Penjualan2', 'Kursi', 5);

Keamanan tingkat baris diimplementasikan dengan fungsi bernilai tabel yang mengembalikan satu baris, jika pengguna memiliki akses yang sesuai, atau tidak ada hasil. Dalam contoh berikut, fungsi nilai tabel mengembalikan baris jika SalesRep kolom sama dengan pengguna yang mengeksekusi kueri.

CREATE SCHEMA Security;CREATE FUNCTION Security.fn_securitypredicate(@SalesRep SEBAGAI sysname) RETURNS TABLEDENGAN SCHEMABINDINGAS RETURN SELECT 1 AS fn_securitypredicate_result WHERE @SalesRep =USER_NAME();CREATE SECURITY FILTER KEBIJAKAN KEAMANAN (NEGARA =AKTIF);

Kami menggunakan driver SQL Server ODBC untuk menyambung ke database sebagai pengguna Sales2. Keamanan tingkat baris memastikan bahwa pengguna ini hanya dapat melihat penjualan yang dilakukan oleh pengguna Sales2.

$ /usr/local/easysoft/unixODBC/bin/isql.sh -v SQLSERVER_2016 Sales2 mypassword+--------------------------- ------------+| Terhubung! || || sql-pernyataan || bantu [namatabel] || berhenti || |+----------------------------------------+SQL> pilih * dari Sales+-- ----------+----------+-----------+-------+| IDPesanan | Staf Penjualan | Produk | Jumlah |+------------+----------+-----------+-------+| 4 | Penjualan2 | Tanda kurung | 2 || 5 | Penjualan2 | Roda | 5 || 6 | Penjualan2 | Kursi | 5 |+------------+----------+-----------+-------+SQL> pilih * dari Penjualan di mana OrderID =1+------------+----------+-----------+------ -+| IDPesanan | Staf Penjualan | Produk | Jumlah |+------------+----------+-----------+-------+| | | | |+------------+----------+-----------+-------+

R dalam basis data

Dengan pembelian Revolution Analytics oleh Microsoft, penyedia perangkat lunak dan layanan untuk bahasa pemrograman R, mereka dapat mengintegrasikan R dengan SQL Server. SQL Server 2016 akan menjadi versi database pertama yang menggabungkan R, memungkinkan kode R dijalankan di dalam mesin database SQL Server.

Jika Anda memiliki versi SQL Server yang lebih lama, alternatifnya adalah mengekstrak data dari SQL Server ke R dengan menggunakan ODBC. Paket RODBC menyediakan antarmuka ODBC untuk R. Kami membangun RODBC terhadap Manajer Driver unixODBC yang disertakan dalam distribusi driver SQL Server kami dan kemudian mengambil beberapa data SQL Server dari R:

# export ODBC_LIBS=/usr/local/easysoft/unixODBC/lib# export ODBC_INCLUDE=/usr/local/easysoft/unixODBC/include# R CMD INSTALL RODBC_1.3-12.tar.gz$ R> library(" RODBC")> ch <- odbcConnect("SQLSERVER_2016")> sqlQuery(ch, paste("SELECT * from Customer")) ID Nama Kartu Kredit Telepon Email1 1 Nama A 111222333 01937 860000 someone@somedomain

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. datetime vs datetime2 di SQL Server:Apa Bedanya?

  2. Apakah mungkin untuk menggabungkan nilai kolom menjadi string menggunakan CTE?

  3. Menggunakan SQL Server sebagai penyimpanan Gambar

  4. Cara Menggunakan Jadwal yang Sama untuk Beberapa Pekerjaan Agen SQL Server (T-SQL)

  5. Dapatkan Bagian Kanan dari sebuah String di SQL Server (T-SQL)