Cari data dan objek di database MS SQL Server menggunakan utilitas Pencarian dbForge gratis

Deskripsi kebutuhan umum untuk menemukan data dan objek dalam database


Pencarian untuk data, serta prosedur tersimpan, tabel, dan objek lain dalam database adalah masalah yang agak relevan, termasuk untuk pengembang C #, serta untuk pengembangan .NET secara umum.

Cukup sering, suatu situasi dapat muncul di mana Anda perlu menemukan:

  1. objek basis data (tabel, tampilan, prosedur tersimpan, fungsi, dll.)
  2. data (nilai dan di mana tabel berada)
  3. cuplikan kode dalam definisi objek basis data

Ada banyak solusi siap pakai, baik berbayar maupun gratis.

Pertama, kita akan melihat bagaimana Anda dapat mencari data dan objek dalam database menggunakan alat DBMS bawaan , dan kemudian kita akan melihat bagaimana melakukan ini menggunakan utilitas dbForge Search gratis.

Cari menggunakan alat DBMS bawaan


Anda dapat menentukan apakah tabel Karyawan di database menggunakan skrip berikut:

Cari tabel berdasarkan nama
select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name]='Employee'; 


Hasilnya bisa seperti ini:



Di sini ditampilkan:

  1. pengidentifikasi objek dan skema di mana objek berada
  2. nama sirkuit ini dan nama objek ini
  3. tipe objek dan deskripsi tipe objek ini
  4. tanggal dan waktu pembuatan dan modifikasi terakhir dari objek

Untuk menemukan semua kemunculan baris "Proyek", Anda dapat menggunakan skrip berikut:

Cari semua objek dengan substring dalam sebuah nama
 select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name] like '%Project%'; 


Hasilnya bisa seperti ini:



Seperti yang Anda lihat dari hasilnya, di sini substring "Project" tidak hanya berisi dua tabel Project dan ProjectSkill, tetapi juga beberapa kunci primer dan asing.

Untuk memahami siapa sebenarnya kunci-kunci ini milik, kami menambahkan ke output bidang parent_object_id dan namanya dan skema di mana ia berada sebagai berikut:

Cari semua objek dengan substring dalam nama dengan output dari objek induk
 select ao.[object_id], ao.[schema_id], schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id, p.[schema_id] as [parent_schema_id], schema_name(p.[schema_id]) as [parent_schema_name], p.[name] as [parent_name], ao.[name], ao.[type], ao.[type_desc], ao.[create_date], ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%'; 


Hasilnya akan berupa tabel dengan informasi terperinci tentang objek induk, yaitu di mana kunci utama dan asing didefinisikan:



Objek sistem berikut ini digunakan dalam kueri:


Jadi, kami menemukan cara menemukan objek dalam database menggunakan alat DBMS bawaan.
Sekarang kami menunjukkan bagaimana menemukan data dalam database menggunakan contoh pencarian string.

Untuk menemukan nilai string untuk semua tabel database, Anda bisa menggunakan solusi berikut. Kami menyederhanakan solusi ini dan menunjukkan bagaimana Anda dapat menemukan, misalnya, nilai "Ramiro" menggunakan skrip berikut:

Cari nilai string dengan substring di semua tabel database
 set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%' declare @sql nvarchar(max); create table #rslt (table_name varchar(128), field_name varchar(128), [value] nvarchar(max)) declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name open s fetch next from s into @name while @@fetch_status = 0 begin declare c cursor for select quotename(column_name) as column_name from information_schema.columns where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name set @name = quotename(@name) open c fetch next from c into @column while @@fetch_status = 0 begin --print 'Processing table - ' + @name + ', column - ' + @column set @sql='insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column + ' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + ''''; print @sql; exec(@sql); fetch next from c into @column; end close c deallocate c fetch next from s into @name end select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt group by table_name, field_name order by table_name, field_name drop table #rslt close s deallocate s 


Hasil dari eksekusi mungkin seperti ini:



Nama tabel ditampilkan di sini dan di mana kolom nilai yang mengandung "Ramiro" substring disimpan. Serta jumlah input dari substring ini ditemukan untuk pasangan tabel-kolom yang ditemukan.

Untuk menemukan objek dalam definisi yang ada potongan kode, Anda dapat menggunakan tampilan sistem berikut:

  1. sys.sql_modules
  2. sys.all_sql_modules
  3. sys.syscomments

Misalnya, menggunakan tampilan terakhir, Anda dapat menggunakan skrip berikut untuk menemukan semua objek dalam definisi yang ditemukan potongan kode:

Cari cuplikan kode dalam definisi objek basis data
 select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%'; 


Identifier, nama, deskripsi, dan definisi penuh dari objek akan ditampilkan di sini.

Cari dengan Utilitas Pencarian dbForge gratis


Namun, lebih mudah untuk mencari menggunakan alat yang bagus dan siap pakai. Salah satu alat tersebut adalah Pencarian dbForge .

Untuk memanggil utilitas ini di jendela SSMS, klik tombol .

Kotak pencarian berikut akan muncul:



Perhatikan panel atas (dari kiri ke kanan):

  1. Anda dapat mengganti mode pencarian (mencari DDL (objek) atau data)
  2. langsung apa yang kita cari (yang substring)
  3. apakah peka huruf besar-kecil, mencari pencocokan kata yang tepat, mencari kejadian:


  4. hasil kelompok berdasarkan jenis objek - tombol
  5. pilih jenis objek yang diperlukan untuk dicari:

  6. Anda juga dapat menentukan beberapa basis data untuk mencari dan memilih contoh MS SQL Server

Ini semua dalam mode pencarian objek, yaitu ketika DDL diaktifkan:



Dalam mode pencarian data, hanya pilihan jenis objek yang akan berubah:



Yaitu, hanya tabel yang akan tersedia untuk seleksi, tempat data itu sendiri disimpan:



Sekarang, seperti sebelumnya, kita akan menemukan semua kemunculan substring "Project" dalam nama-nama objek:



Seperti yang Anda lihat, mode pencarian untuk objek DDL dipilih, itu diisi bahwa kita sedang mencari garis "Proyek", sisanya semuanya secara default.

Saat menyorot objek yang ditemukan, kode definisi objek ini atau seluruh objek induknya ditampilkan di bawah ini.

Anda juga dapat memindahkan navigasi ke objek yang ditemukan dengan mengklik tombol :



Anda juga dapat mengelompokkan objek yang ditemukan berdasarkan tipenya:



Harap dicatat bahwa bahkan tabel tersebut ditampilkan di mana ada bidang yang namanya mengandung "Proyek" substring. Namun, ingat bahwa mode pencarian dapat diubah: untuk mencari kepatuhan penuh / sebagian / case sensitif atau tidak.

Sekarang kita menemukan nilai "Ramiro" di semua tabel:



Perhatikan bahwa semua baris yang berisi substring "Ramiro" dari tabel Karyawan yang dipilih ditampilkan di bawah ini.

Anda juga dapat memindahkan navigasi ke objek yang ditemukan dengan menekan tombol seperti sebelumnya :



Dengan demikian kita dapat mencari objek dan data yang diperlukan dalam database.

Kesimpulan


Cara untuk mencari data itu sendiri dan objek dalam database diperiksa menggunakan alat bawaan dari MS SQL Server DBMS itu sendiri dan menggunakan utilitas dbForge Search gratis.

Devart juga memiliki sejumlah solusi siap pakai gratis lainnya, daftar lengkapnya dapat ditemukan di sini .

Sumber


Source: https://habr.com/ru/post/id475212/


All Articles