دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
System Tables در Sql Server
1404/06/26 -
کنترل panel در سی شارپ
1404/06/25 -
security policy در Sql Server
1404/05/05 -
کنترل pageSetupDialog در سی شارپ
1404/05/03 -
نقش (Role) در Sql Server
1404/05/02 -
کنترل OpenFileDialog در سیشارپ
1404/04/31
System Tables در Sql Server

مقدمه
در SQL Server، System Tables یا جداول سیستمی، یکی از حیاتیترین اجزای پایگاه داده محسوب میشوند که اطلاعات مربوط به ساختار، کاربران، دسترسیها، تنظیمات و رفتار داخلی دیتابیس را ذخیره میکنند.
بسیاری از مدیران پایگاه داده (DBAها) برای مدیریت بهتر سیستم، نیازمند درک عمیق از این جداول هستند.
System Tables چیست؟
System Tables جداولی هستند که به طور پیشفرض توسط SQL Server ایجاد شده و وظیفه آنها نگهداری اطلاعات سیستمی درباره دیتابیس و سرور است.
این جداول معمولاً در Schema = sys قرار دارند.
ویژگیهای System Tables در SQL Server
System Tables یکی از حیاتیترین بخشهای پایگاه داده در SQL Server هستند.
این جداول بهصورت داخلی ایجاد شده و اطلاعات مهمی درباره ساختار، کاربران، ایندکسها، ستونها، تنظیمات و وضعیت دیتابیس در خود نگهداری میکنند.
شناخت ویژگیهای آنها به مدیران پایگاه داده (DBAها) کمک میکند تا در مدیریت و نگهداری دیتابیس عملکرد بهتری داشته باشند.
۱. ایجاد خودکار توسط سیستم
System Tables بهصورت خودکار توسط SQL Server ایجاد میشوند و کاربر نمیتواند مستقیماً آنها را بسازد. این ویژگی باعث میشود ساختار پایگاه داده یکپارچه و استاندارد باقی بماند.
۲. غیرقابل حذف بودن
یکی از مهمترین ویژگیهای System Tables این است که کاربر امکان حذف System Tables را ندارد. دلیل این محدودیت، حیاتی بودن اطلاعات ذخیره شده در این جداول است. حذف آنها میتواند کل دیتابیس را از کار بیندازد.
۳. فقط خواندنی بودن (Read-Only)
بیشتر System Tables فقط قابل خواندن هستند و SQL Server اجازه تغییر مستقیم آنها را به کاربران نمیدهد. این ویژگی امنیت دیتابیس را تضمین میکند.
۴. نگهداری متادیتا (Meta Data)
System Tables اطلاعات متادیتا را ذخیره میکنند؛ یعنی دادههایی درباره ساختار دیتابیس مثل:
نام جداول
ستونها و نوع دادهها
ایندکسها و کلیدهای اصلی
روابط بین جداول
کاربران و نقشها
۵. دسترسی غیرمستقیم از طریق Viewها
بهطور مستقیم دسترسی به System Tables محدود است، اما SQL Server Viewهای سیستمی مثل sys.tables و sys.columns را فراهم کرده که دادههای System Tables را نمایش میدهند.
۶. حفاظت امنیتی بالا
به دلیل اهمیت بالا، System Tables بهطور پیشفرض در برابر تغییرات دستی محافظت شدهاند. این ویژگی باعث میشود کاربران نتوانند بهصورت تصادفی اطلاعات حیاتی دیتابیس را خراب کنند.
۷. پشتیبانی از مدیریت و عیبیابی
DBAها از System Tables برای:
مانیتورینگ دیتابیس
بررسی لاگها
پیدا کردن خطاها
بررسی وضعیت ایندکسها
استفاده میکنند.
۸. وابسته به نسخه SQL Server
نوع و تعداد System Tables ممکن است بر اساس نسخه SQL Server (مثلاً 2012، 2016 یا 2019) تفاوت داشته باشد. اما اصل ساختار آنها ثابت است.
کاربرد System Tables در SQL Server
System Tables در SQL Server نقش حیاتی در مدیریت و نگهداری پایگاه داده ایفا میکنند.
این جداول که توسط خود SQL Server ایجاد میشوند، اطلاعات متادیتا (Meta Data) مربوط به ساختار دیتابیس، جداول، ستونها، ایندکسها، کاربران و نقشها را ذخیره میکنند.
آشنایی با کاربردهای این جداول به مدیران پایگاه داده (DBA) و توسعهدهندگان کمک میکند تا بتوانند بهصورت حرفهای سیستم را مدیریت کنند.
۱. مدیریت متادیتا (Metadata Management)
یکی از مهمترین کاربردهای System Tables ذخیره و مدیریت اطلاعات متادیتا است. با استفاده از این جداول میتوانید جزئیاتی مثل:
لیست جداول موجود در دیتابیس
ستونها و نوع داده هر ستون
کلیدهای اصلی و خارجی
ایندکسها و روابط بین جداول
را مشاهده کنید.
📌 مثال کاربردی:
SELECT * FROM sys.tables;
این کوئری لیست تمامی جداول موجود در دیتابیس را نمایش میدهد.
۲. امنیت و مدیریت کاربران
System Tables اطلاعات مربوط به کاربران، نقشها و دسترسیهای امنیتی را ذخیره میکنند. این ویژگی به DBA کمک میکند تا دسترسیها را بررسی و در صورت نیاز مدیریت کند.
📌 مثال:
SELECT * FROM sys.sysusers;
با این دستور میتوانید لیست کاربران دیتابیس را مشاهده کنید.
۳. مانیتورینگ و عیبیابی دیتابیس
از دیگر کاربردهای System Tables، بررسی وضعیت دیتابیس و شناسایی مشکلات احتمالی است. DBAها میتوانند با پرسوجو از این جداول، وضعیت ایندکسها، لاگها و رکوردهای سیستمی را بررسی کنند.
۴. پشتیبانی از گزارشگیری (Reporting)
System Tables امکان تهیه گزارشهای مدیریتی از ساختار و وضعیت دیتابیس را فراهم میکنند. به عنوان مثال میتوانید گزارشی از تمامی ستونهای یک جدول خاص تولید کنید.
📌 مثال:
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.Products');
۵. یکپارچگی و سازگاری سیستم
از آنجا که System Tables بهصورت خودکار توسط SQL Server ایجاد میشوند، ساختار دیتابیس همیشه استاندارد و یکپارچه باقی میماند. این موضوع برای مقیاسپذیری و سازگاری سیستم اهمیت بالایی دارد.
۶. جایگزینی برای ایجاد و حذف جداول مشابه
هرچند امکان ایجاد System Tables یا حذف System Tables بهصورت مستقیم وجود ندارد، اما شما میتوانید جداول سفارشی مشابه بسازید و در صورت نیاز حذف کنید. این موضوع یکی از کاربردهای غیرمستقیم System Tables محسوب میشود، چون الگوی مناسبی برای طراحی جداول مدیریتی فراهم میکنند.
📌 مثال ایجاد جدول مشابه:
CREATE TABLE dbo.CustomSystemTable
(
Id INT IDENTITY(1,1) PRIMARY KEY,
TableName NVARCHAR(100),
CreatedDate DATETIME DEFAULT GETDATE(),
CreatedBy NVARCHAR(50)
);
📌 مثال حذف جدول مشابه:
DROP TABLE dbo.CustomSystemTable;
مزایا کار با System Tables در SQL Server
System Tables در SQL Server یکی از اجزای حیاتی دیتابیس هستند که اطلاعات متادیتا (Meta Data) مانند جداول، ستونها، ایندکسها، روابط و کاربران را در خود نگهداری میکنند.
شناخت مزایا و معایب این جداول به مدیران پایگاه داده (DBAها) کمک میکند تا استفادهی درست و ایمنی از آنها داشته باشند.
۱. دسترسی به متادیتا (Metadata)
یکی از بزرگترین مزایای System Tables این است که امکان دسترسی سریع به اطلاعات ساختاری دیتابیس را فراهم میکنند. بهعنوان مثال:
SELECT * FROM sys.tables;
این دستور، لیست تمام جداول موجود در دیتابیس را نمایش میدهد.
۲. افزایش بهرهوری DBAها
مدیران پایگاه داده میتوانند با پرسوجو از System Tables به سرعت گزارشهای مدیریتی ایجاد کنند، بدون نیاز به ابزارهای خارجی.
۳. امنیت بالا
اکثر System Tables فقط خواندنی (Read-Only) هستند و تغییر مستقیم آنها توسط کاربران امکانپذیر نیست. این ویژگی مانع از خراب شدن ساختار دیتابیس میشود.
۴. کمک به مانیتورینگ و عیبیابی
از System Tables میتوان برای شناسایی مشکلات احتمالی، بررسی وضعیت ایندکسها و کاربران استفاده کرد.
📌 مثال:
SELECT * FROM sys.sysusers;
لیست کاربران موجود در دیتابیس را نشان میدهد.
۵. یکپارچگی و استاندارد بودن
System Tables توسط SQL Server ایجاد و مدیریت میشوند. بنابراین ساختار دیتابیس همیشه مطابق استاندارد باقی میماند.
معایب کار با System Tables در SQL Server
۱. محدودیت در ایجاد System Tables
کاربران نمیتوانند مستقیماً ایجاد System Tables کنند. این جداول فقط توسط SQL Server ساخته میشوند.
۲. غیرقابل حذف بودن
حذف System Tables امکانپذیر نیست. SQL Server به دلایل امنیتی اجازه حذف آنها را نمیدهد، چون حذف این جداول باعث از کار افتادن دیتابیس میشود.
۳. محدودیت در ویرایش مستقیم
اغلب System Tables فقط خواندنی هستند. بنابراین کاربران نمیتوانند مستقیماً مقادیر آنها را تغییر دهند و باید از Viewهای سیستمی استفاده کنند.
۴. نیاز به دانش تخصصی
کار با System Tables نیازمند دانش فنی بالا است. استفاده نادرست از آنها میتواند منجر به خطا در پرسوجوها یا گزارشگیری شود.
۵. وابستگی به نسخه SQL Server
نوع و ساختار برخی System Tables ممکن است بین نسخههای مختلف SQL Server (مانند 2012، 2016 یا 2019) تفاوت داشته باشد. بنابراین DBA باید با تغییرات نسخهها آشنا باشد.
ایجاد System Tables در SQL Server
به طور مستقیم امکان ایجاد System Tables توسط کاربر وجود ندارد. SQL Server این جداول را به صورت داخلی مدیریت میکند.
با این حال، شما میتوانید جداول سفارشی مشابه بسازید تا نیازهای مدیریتی خود را برطرف کنید.
نحوه ایجاد جدول مشابه System Table
CREATE TABLE dbo.CustomSystemTable
(
Id INT IDENTITY(1,1) PRIMARY KEY,
TableName NVARCHAR(100),
CreatedDate DATETIME DEFAULT GETDATE(),
CreatedBy NVARCHAR(50)
);
🔹 این جدول میتواند اطلاعات مدیریتی مشابه System Tables ذخیره کند.
حذف System Tables در SQL Server
SQL Server به شما اجازه حذف System Tables را نمیدهد زیرا حذف آنها باعث از کار افتادن یا آسیب جدی به دیتابیس خواهد شد.
🟨 نحوه حذف جدول مشابه System Table
DROP TABLE dbo.CustomSystemTable;
مثالهای کاربردی با System Tables
نمایش لیست همه جداول
SELECT * FROM sys.tables;
مشاهده ستونهای یک جدول خاص
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.Products');
نمایش کاربران دیتابیس
SELECT * FROM sys.sysusers;
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
⇐همین حالا شروع کنید و به دنیای دادهها بپیوندید!
نکات مهم در کار با System Tables در SQL Server
به دلیل اهمیت بالای این جداول، کار کردن با آنها نیازمند رعایت نکات مهمی است تا از بروز خطا، از دست رفتن دادهها یا افت عملکرد جلوگیری شود.
۱. عدم امکان ایجاد مستقیم System Tables
کاربران نمیتوانند به صورت دستی ایجاد System Tables انجام دهند. این جداول توسط خود SQL Server و به صورت خودکار ساخته میشوند. در صورت نیاز به ساخت جداول مشابه، بهتر است از User Tables استفاده کنید.
۲. عدم امکان حذف System Tables
به هیچ عنوان امکان حذف System Tables وجود ندارد. حذف این جداول باعث از کار افتادن کامل دیتابیس میشود. اگر بهطور تصادفی تلاش برای حذف کنید، SQL Server خطا نمایش میدهد.
۳. استفاده از Viewهای سیستمی به جای دسترسی مستقیم
بهترین روش برای مشاهده دادههای System Tables، استفاده از Viewهای سیستمی مانند sys.objects یا sys.tables است. این روش امنیت بالاتری دارد و در نسخههای مختلف SQL Server پشتیبانی میشود.
📌 مثال:
SELECT * FROM sys.objects WHERE type = 'U';
این دستور تمام جداول کاربری (User Tables) را نمایش میدهد.
۴. عدم ویرایش مستقیم دادهها
System Tables فقط برای خواندن (Read-Only) طراحی شدهاند. تغییر مستقیم دادهها باعث ایجاد ناسازگاری و خرابی در دیتابیس میشود.
۵. آشنایی با ساختار نسخههای مختلف SQL Server
برخی از System Tables ممکن است بین نسخههای مختلف SQL Server متفاوت باشند. بنابراین همیشه مستندات رسمی مایکروسافت را مطالعه کنید.
۶. محدود کردن سطح دسترسی
بهتر است دسترسی به System Tables فقط در اختیار مدیران پایگاه داده (DBAها) باشد. این موضوع هم امنیت را افزایش میدهد و هم مانع از دستکاریهای ناخواسته میشود.
۷. استفاده برای گزارشگیری و مانیتورینگ
System Tables ابزار قدرتمندی برای ساخت گزارشهای مدیریتی و پایش سلامت دیتابیس هستند. برای مثال، از sys.indexes میتوانید برای بررسی وضعیت ایندکسها استفاده کنید.
۸. پشتیبانگیری قبل از تغییرات اساسی
قبل از هرگونه عملیات مهم در دیتابیس، بهتر است یک بکاپ کامل بگیرید. این کار تضمین میکند که در صورت بروز مشکل، امکان بازگردانی وجود دارد.
پرسشهای متداول درباره System Tables
آیا میتوان System Tables را ایجاد کرد؟
خیر. فقط SQL Server این جداول را میسازد. اما شما میتوانید جداول سفارشی مشابه ایجاد کنید.
آیا امکان حذف System Tables وجود دارد؟
خیر. حذف System Tables غیرممکن و خطرناک است. تنها میتوانید جداول سفارشی مشابه را حذف کنید.
بهترین روش برای دسترسی به اطلاعات System Tables چیست؟
استفاده از Viewهای سیستمی مانند sys.tables و sys.columns بهترین و ایمنترین روش است.
چه جایگزینی برای ایجاد یا حذف System Tables وجود دارد؟
بهترین روش، ایجاد جداول سفارشی مشابه است و در صورت نیاز به حذف، فقط همان جداول سفارشی را پاک کنید.
سخن پایانی
System Tables در SQL Server بخش حیاتی و غیرقابل حذف از پایگاه داده هستند که اطلاعات مهم سیستم را ذخیره میکنند.
اگرچه ایجاد یا حذف مستقیم آنها امکانپذیر نیست، ولی با ایجاد جداول سفارشی مشابه، میتوانید نیازهای مدیریتی خود را برطرف کنید.
درک صحیح این جداول برای DBAها ضروری است، زیرا بخش مهمی از مدیریت، امنیت و مانیتورینگ دیتابیس به آنها وابسته است.
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .