میخواستم بدونم چطور میتوانیم لیستی از دیتابیس های Sql Server رو داشته باشیم برای استفاده و تولید کانکشن استرینگ داینامیک با توجه به این نکته که در کنار آن نام فارسی دیتابیس وجود داشته باشد ؟؟؟
برای مثال فرض شود در هر دیتابیس جدولی وجود دارد که در آن فیلدهای زیر موجود باشد :
حال لیستی از دیتابیس ها نمایش داده شوند که در آن لیست این جدول هم در کنار آن نمایش داده شود !!!
لطفا راهنمایی بفرمایید
* ویرایش *
جهت توضیح کاملتر به تصاویر زیر توجه بفرمایید :
تصویر بالا جهت نمایش نتیجه
تصویر بالا جهت اطلاع از لیست دیتابیس ها
تصویر بالا جهت اینکه در هر دیتا بیس یک جدول با فیلدهای بالا موجود می باشد
ببینید در دیتابیس master یک جدول به نام databases وجود داره که شما هر دیتابیسی که در Sql Server ایجاد می کنید مشخصات و نام اون دیتابیس در این جدول ثبت و نگهداری میشه.
SELECT * FROM master.sys.databases
خروجی :
اما طبق توضیحات و تصاویری که شما ارسال کردید به نظر میاد از یک جدول که خود کاربر ایجاد کرده استفاده شده. یعنی یک جدول با فیلدهای مورد نیاز ایجاد شده و هر دیتابیسی که ایجاد شده اطلاعاتش رو در این جدول ثبت کردن و نمایش دادن.
دقت کنید 4 تا دیتابیس به صورت ثابت در همه Sql Server ها وجود داره که شما میتونید این 4 تا رو نمایش ندید :
Select * From master.sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
توسط کد بالا فقط دیتابیس هایی که خودتون ایجاد کردید نمایش داده میشه.
ممنون از توضیحتون بله میدونم جداول موجود در Sql رو تا حد خوبی آشنایی دارم ، دقیقا درست متوجه شدید جدولی در هر دیتا بیس ایجاد شده و من میخوام لیست دیتابیس ها به همراه فیلدهای همون جدول که در هر دیتابیس ایجاد شده در یک کوئری کنار هم نمایش داده شوند ؟!
باتشکر از توجه شما
دوستان تقریبا پاسخ شما رو دادن اما اگر شما چند دیتابیس دارید که یک جدول مشترک درون همه اونها هست و میخواید اطلاعات اون جدول رو داشته باشید یکی از راه حل ها این هست که برای اون جدول یک schema اختصاصی ایجاد کنید. بعد از اون میتونید یک query از جداولی در دیتابیس بگیرید که اون schema رو دارن. به تصویر زیر دقت کنید :
در تصویر بالا dbo همون schema هست. شما میتونید هر schema دیگه ای هم تعریف کنید. مثلا میتونید داشته باشید :
Select * From myschema.Users
در مثال بالا myschema یک schema اختصاصی و جدید هست.
نمایش لیست همه جداول موجود در Sql Server در دیتابیس
خب حالا که در هر دیتابیس یک جدول با Schema اختصاصی دارید میتونید به صورت زیر لیست اونها رو داشته باشید و یا باهاشون کار کنید :
select *
from sys.tables
where schema_name(schema_id) = 'myschema' -- put your schema name here
order by name;
در دیتابیس master و جدول tables لیست همه جداول در Sql Server شما موجود هست.
ممنون از شما و دوستان
مهندس جان من خودم به این کوئری رسیدم ولی این یه مشکل گاهی برام ایجاد میکنه و اون اینه که اگر روی سیستمی در یک اینستنس دیتابیسی همنام یا شبیه نام دیتابیس ها من موجود باشه ولی در اون جدولی مانند جدول دیتابیس من وجود نداشته باشه کوئری با خطا مواجه میشه و کلا اجرا نمیشه .
CREATE TABLE #TempTable
(
DatabaseName VARCHAR(100),
TableName varchar(100),
List_of_Columns VARCHAR(100)
);
GO
INSERT INTO #TempTable
EXEC sp_MSforeachdb
'
USE [?]
DECLARE @DbName NVARCHAR(128);
SET @DbName = DB_NAME(DB_ID());
SELECT
@DbName AS DB,
[Name] AS Name,
(SELECT STRING_AGG(COLUMN_NAME,''\'') AS List_of_Columns
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = ''TblSetting''
GROUP BY TABLE_NAME) as x
FROM sys.tables
WHERE [type] = ''U''
AND
DB_ID() > 4
AND [NAME] = ''TblSetting''
';
GO
SELECT * FROM #TempTable;
GO
به هر حال مهندس جان اگر پیشنهاد و راه حل بهتری برای نمایش سالها و دیتابیس ها دارید و باید در دیتابیس تغییرات ابجاد کنم من تغییرات در دیتابیس اعمال میکنم .
در هر صورت ممنون از پیگیری و راهنمایی ها
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1172
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
618
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
373
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
335
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4294
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
687
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3192
- پاسخ :
2
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
474
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
948
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|