ورود

View Full Version : حرفه ای: درآردن کلیه اطلاعات از یک دیتابیس



sokote_bi_payan
سه شنبه 04 آبان 1389, 15:39 عصر
به نام خدا
سلام خدمت اساتید محترم
می خواستم ببینم چطوری می تونم دل و روده یک دیتابیس و بکشم بیرون :
نام جداول و نام فیلدها و نوع فیلدها (اینا کاری نداره)
کلید اصلی ، کلید خارجی ، پراسیجر، توابع، تریگر، View و...

ممنون

حمیدرضاصادقیان
سه شنبه 04 آبان 1389, 16:20 عصر
سلام.روی دیتابیس راست کلیک کرده و در قسمت all task-generate sql script در اونجا میتونید از تمامی اشیا موجود در یک دیتابیس یک Script تهیه کنید.
موفق باشید

Rezahak
سه شنبه 04 آبان 1389, 16:36 عصر
با سلام يك سري اشياء سيستمي از قبيل table و view و SP و ... در اسكيما sys وجود دارد كه ابتداي آنها با sys شروع مي شود مانند sysobjects تمام دل و روده Database داخل آنها موجود مي باشد

sokote_bi_payan
چهارشنبه 05 آبان 1389, 08:19 صبح
من جدول و فیلد و نوع فیلدها رو تونستم (البته تو اوراکل همه چی شو راحت میشه بدست آورد) اما تو اس کیو ال نمی دونم چه کوئری بزنم تا پراسیجر و ویو و کلید اصلی و... بدست بیارم. میشه کوئری شو اگه دارید بذارید؟
ممنون

حمیدرضاصادقیان
چهارشنبه 05 آبان 1389, 08:38 صبح
سلام.عرض کردم راحتترین راه که با چند تاکلیک میتونید به نتیجه برسید ایجاد یک Script از کل دیتابیس هست که روششو نیز توضیح دادم.
موفق باشید

sokote_bi_payan
چهارشنبه 05 آبان 1389, 09:23 صبح
عزیز من می خوام یه برنامه بنویسم که این کارو بکنه والا اون راه و بلدم!!!!!!!!!!!!!!!

sokote_bi_payan
چهارشنبه 05 آبان 1389, 09:26 صبح
با استفاده از این کوئری می تونیم اطلاعات فیلدها رو دربیاریم :

select column_name ‘Column Name’, data_type ‘Data Type’, character_maximum_length ‘Maximum Length’ from information_schema.columns where table_name = ‘table_name’

اما کلید اصلی و کلید خارجی و پراسیجر و... نمی دونم

sokote_bi_payan
چهارشنبه 05 آبان 1389, 09:29 صبح
این کوئری هم کلید اصلی و خارجی و.. می ده


SELECT i.name AS index_name
, CASE i.type_desc WHEN ‘CLUSTERED’ THEN ‘Yes’ ELSE ‘No’ END AS ‘Clustered’
,is_unique
,ds.type AS filegroup_or_partition_scheme
,ds.name AS filegroup_or_partition_scheme_name
,ignore_dup_key
,is_primary_key
,is_unique_constraint
,fill_factor
,is_padded
,is_disabled
,allow_row_locks
,allow_page_locks
FROM sys.indexes AS i
INNER JOIN sys.data_spaces AS ds ON i.data_space_id = ds.data_space_id
WHERE is_hypothetical = 0 AND i.index_id 0
AND i.object_id IN (OBJECT_ID(”), OBJECT_ID(”))
ORDER BY i.object_id;

حمیدرضاصادقیان
چهارشنبه 05 آبان 1389, 09:30 صبح
سلام.شما میتونید با استفاده از Information_schema به جواب برسید.
مثال :


select * from information_Schema.tables

واین لینک هم توضیح مواردی که میتونید با استفاده از اون به دست بیارید.
information_Schema (http://msdn.microsoft.com/en-us/library/ms186778.aspx)

SQL DEVELOP
چهارشنبه 05 آبان 1389, 09:36 صبح
با تشکر از جناب صادقیان که فکر می کنم بهترین پاسخ رو دادند هر چند می شود برای هر نوع آبجکتی یک اس پی نوشت، ولی فکر می کنم مشکل شما کلید اصلی و کلید خارجی و پراسیجر و... باشه. امیدوارم کد زیر بهتون کمک کنه:


USE TestDB
GO
SELECT * FROM sys.objects
WHERE type IN ('U','PK','F','C','D','V','P','UQ');
GO