Jadual Kandungan
解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(译)
Rumah pangkalan data tutorial mysql 解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(

解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(

Jun 07, 2016 pm 03:19 PM
sqlserver Sekarang lulus

解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(译) http://improve.dk/orcamdf-now-exposes-metadata-through-system-dmvs/ 我坐在去丹麦的火车上,参加在北欧的SQL RALLY会议的最后一站。在演讲的过程中,我根据OrcaMDF 的工作比较含蓄地宣

解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(译)

http://improve.dk/orcamdf-now-exposes-metadata-through-system-dmvs/

我坐在去丹麦的火车上,参加在北欧的SQL RALLY会议的最后一站。在演讲的过程中,我根据OrcaMDF 的工作比较含蓄地宣布了OrcaMDF可以读取元数据

现在,我也不妨在这里分享。除了在OrcaMDF中扩大对核心引擎的支持之外,另一个重要的我想要实现的主要功能之一就是显示关于的你的数据库的元数据

你的表,列,数据库是怎麽展开的?

解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(

 

 

避免错误的抽象

我最初的想法是在上层对象下面创建自己的抽象层,你可以通过database.GetMetadata().UserTables 枚举出你的所有的用户表

你可以获取用户表的列表,包括数据列。从开发层面考虑这是一个非常清晰的接口,每样东西都是普通的.NET对象。

然而,这需要我自己去定义抽象- 如何去划分出哪些数据需要暴露,哪些数据不能,怎样抽象对于DBA是最自然的,需不需要使用

类似SQLSERVER的 sys. DMVs

 

从SQLSERVER里暴露出内置的DMVs

我花费了一些时间考虑最后会有哪类人使用OrcaMDF ,最后得出结论是这个世界可能只有四类人会使用

而将这四类人再拆分开最终只有DBA和SQLSERVER开发人员。而他们通常会通过DVMs 例如sys.tables,sys.columns,sys.indexes

来浏览SQLSERVER数据库的元数据。那么能够使我有信心开发这个功能的动力是我已经能解析出所有的系统表,并且使用 SELECT OBJECT_DEFINITION() 

我能够看到内置的系统DMVs的源代码。因此,创建我自己的内置DMVs的复制品是一件很简单事

 

 

在OrcaMDF里如何使用DMVs 

比如我们需要获取某个表的所有列的信息,我们会建立如下SQL语句

<span>SELECT</span><span>
    c.</span><span>*</span>
<span>FROM</span><span>
    sys.columns c
</span><span>INNER</span> <span>JOIN</span><span>
    sys.tables t </span><span>ON</span> c.<span>object_id</span> <span>=</span> t.<span>object_id</span>
<span>WHERE</span><span>
    t.name </span><span>=</span> <span>'</span><span>Persons</span><span>'</span>
Salin selepas log masuk

在OrcaMDF里的C#代码里看起来会像这样:

<span>using</span> (<span>var</span> db = <span>new</span> Database(<span>new</span>[] { <span>@"</span><span>C:Test.mdf</span><span>"</span><span> }))
{
    </span><span>var</span> sys =<span> db.Dmvs;

    </span><span>var</span> table = sys.Tables.Where(t => t.Name == <span>"</span><span>Persons</span><span>"</span><span>).Single();
    </span><span>var</span> columns = sys.Columns.Where(c => c.ObjectID ==<span> table.ObjectID);

    </span><span>foreach</span> (<span>var</span> col <span>in</span><span> columns)
        Console.WriteLine(col.Name);
}</span>
Salin selepas log masuk

如果你更喜欢SQL-esque LINQ的语法,你当然可以像下面那样做

<span>using</span> (<span>var</span> db = <span>new</span> Database(<span>new</span>[] { <span>@"</span><span>C:Test.mdf</span><span>"</span><span> }))
{
    </span><span>var</span> sys =<span> db.Dmvs;

    </span><span>var</span> columns =    <span>from</span> c <span>in</span><span> sys.Columns
            join t </span><span>in</span><span> sys.Tables on c.ObjectID equals t.ObjectID
            </span><span>where</span> t.Name == <span>"</span><span>Persons</span><span>"</span>
            <span>select</span><span> c;

    </span><span>foreach</span> (<span>var</span> col <span>in</span><span> columns)
        Console.WriteLine(col.Name);
}</span>
Salin selepas log masuk

不管使用哪种写法,结果都会像下面那样

解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(

 

 

可用的DMVs有哪些

如果你获取到最新的已提交的OrcaMDF代码,你可以访问下面的DMVs,他们是通过SQLSERVER暴露出来的

<span>sys.columns
sys.indexes
sys.index_columns
sys.objects
sys.objects$
sys.system_internals_allocation_units
sys.system_internals_partitions
sys.system_internals_partition_columns
sys.tables
sys.types</span>
Salin selepas log masuk

 

如果你对DMV 有期望可以跟我联系,我会让你愿望成真!

 

第九篇完

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengimport fail mdf ke dalam sqlserver Bagaimana untuk mengimport fail mdf ke dalam sqlserver Apr 08, 2024 am 11:41 AM

Langkah import adalah seperti berikut: Salin fail MDF ke direktori data SQL Server (biasanya C:\Program Files\Microsoft SQL Server\MSSQL\DATA). Dalam SQL Server Management Studio (SSMS), buka pangkalan data dan pilih Lampirkan. Klik butang Tambah dan pilih fail MDF. Sahkan nama pangkalan data dan klik butang OK.

Bagaimana untuk menyelesaikan masalah yang objek bernama sudah wujud dalam pangkalan data sqlserver Bagaimana untuk menyelesaikan masalah yang objek bernama sudah wujud dalam pangkalan data sqlserver Apr 05, 2024 pm 09:42 PM

Untuk objek dengan nama yang sama yang telah wujud dalam pangkalan data SQL Server, langkah berikut perlu diambil: Sahkan jenis objek (jadual, paparan, prosedur tersimpan). IF NOT EXISTS boleh digunakan untuk melangkau penciptaan jika objek kosong. Jika objek mempunyai data, gunakan nama lain atau ubah suai struktur. Gunakan DROP untuk memadam objek sedia ada (berhati-hati, sandaran disyorkan). Semak perubahan skema untuk memastikan tiada rujukan kepada objek yang dipadam atau dinamakan semula.

Apa yang perlu dilakukan jika perkhidmatan sqlserver tidak dapat dimulakan Apa yang perlu dilakukan jika perkhidmatan sqlserver tidak dapat dimulakan Apr 05, 2024 pm 10:00 PM

Apabila perkhidmatan SQL Server gagal dimulakan, berikut ialah beberapa langkah untuk diselesaikan: Semak log ralat untuk menentukan punca. Pastikan akaun perkhidmatan mempunyai kebenaran untuk memulakan perkhidmatan. Semak sama ada perkhidmatan pergantungan sedang berjalan. Lumpuhkan perisian antivirus. Membaiki pemasangan SQL Server. Jika pembaikan tidak berjaya, pasang semula SQL Server.

Bagaimana untuk menyemak nombor port sqlserver Bagaimana untuk menyemak nombor port sqlserver Apr 05, 2024 pm 09:57 PM

Untuk melihat nombor port SQL Server: Buka SSMS dan sambung ke pelayan. Cari nama pelayan dalam Object Explorer, klik kanan padanya dan pilih Properties. Dalam tab Sambungan, lihat medan Port TCP.

Bagaimana untuk memulihkan pangkalan data yang dipadam secara tidak sengaja dalam sqlserver Bagaimana untuk memulihkan pangkalan data yang dipadam secara tidak sengaja dalam sqlserver Apr 05, 2024 pm 10:39 PM

Jika anda secara tidak sengaja memadamkan pangkalan data SQL Server, anda boleh mengambil langkah-langkah berikut untuk memulihkan: hentikan aktiviti pangkalan data periksa log pangkalan data: pulihkan daripada sandaran menggunakan DBCC; alatan parti. Sila sandarkan pangkalan data anda dengan kerap dan dayakan pengelogan transaksi untuk mengelakkan kehilangan data.

Di manakah pangkalan data sqlserver? Di manakah pangkalan data sqlserver? Apr 05, 2024 pm 08:21 PM

Fail pangkalan data SQL Server biasanya disimpan di lokasi lalai berikut: Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Lokasi fail pangkalan data boleh disesuaikan dengan mengubah suai laluan fail pangkalan data tetapan.

Bagaimana untuk menyelesaikan ralat SqlServer sambungan Java Bagaimana untuk menyelesaikan ralat SqlServer sambungan Java May 01, 2023 am 09:22 AM

Masalahnya didapati bahawa kali ini saya menggunakan pangkalan data SqlServer, yang saya tidak pernah gunakan sebelum ini, tetapi masalahnya tidak serius Selepas saya menyambungkan SqlServer mengikut langkah-langkah dalam dokumen keperluan, saya memulakan projek SpringBoot dan menemui satu. ralat, seperti berikut: Pada mulanya saya fikir ia adalah sambungan SqlServer Terdapat masalah, jadi saya pergi untuk menyemak pangkalan data dan mendapati bahawa segala-galanya dalam pangkalan data saya mula-mula bertanya kepada rakan-rakan saya jika mereka mempunyai masalah seperti itu mendapati bahawa mereka tidak, jadi saya memulakan bahagian terbaik saya, menghadapi pengaturcaraan Baidu. Mesej ralat khusus yang saya mula selesaikan ialah ini, jadi saya memulakan pelaporan ralat Baidu: ERRORc.a.d.p.DruidDataSource$CreateCo

Bagaimana untuk memadam sqlserver jika pemasangan gagal? Bagaimana untuk memadam sqlserver jika pemasangan gagal? Apr 05, 2024 pm 11:27 PM

Jika pemasangan SQL Server gagal, anda boleh membersihkannya dengan mengikuti langkah berikut: Nyahpasang SQL Server Padam kekunci pendaftaran Padam fail dan folder Mulakan semula komputer

See all articles