উত্তর:
এক্সিকিউট:
SELECT name FROM master.sys.databases
এটি এখন পছন্দসই পদ্ধতির পরিবর্তে dbo.sysdatabases
, যা কিছু সময়ের জন্য অবচিত করা হয়েছে।
এই কোয়েরি কার্যকর করুন:
SELECT name FROM master.dbo.sysdatabases
বা আপনি যদি পছন্দ করেন
EXEC sp_databases
exec sp_databases
কাজ করে নি। অন্য দুটি ( master.dbo.sysdatabases
এবং sys.databases
) এখনও কাজ করে।
সিস্টেম ডাটাবেসগুলি বাদ দিতে:
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6
সম্পাদিত: 2:36 PM 2/5/2013
সঠিক ডাটাবেস_আইডের সাথে আপডেট হয়েছে, 1 থেকে 4 এর মধ্যে ডাটাবেস আইডি থাকা তালিকাভুক্ত সিস্টেম ডাটাবেসগুলি এড়ানো 4 এর চেয়ে বেশি হওয়া উচিত।
SELECT *
FROM sys.databases d
WHERE d.database_id > 4
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4
আমাদের এসকিউএল সার্ভার ২০০৮ এ কাজ করে
ID
5 এবং 6 সহ সিস্টেম ডেটাবেসগুলি হবে ReportServer
এবং ReportServerTempDB
যদি আপনি SQL Server Reporting Services
ইনস্টল করেন।
যেহেতু আপনি। নেট ব্যবহার করছেন তাই আপনি এসকিউএল সার্ভার ম্যানেজমেন্ট অবজেক্ট ব্যবহার করতে পারেন
Dim server As New Microsoft.SqlServer.Management.Smo.Server("localhost")
For Each db As Database In server.Databases
Console.WriteLine(db.Name)
Next
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
বিভ্রান্ত করবেন না, সমস্ত ডাটাবেসগুলি পেতে নীচের সাধারণ ক্যোয়ারীটি ব্যবহার করুন,
select * from sys.databases
আপনার যদি কেবলমাত্র ব্যবহারকারী সংজ্ঞায়িত ডাটাবেসগুলির প্রয়োজন হয়;
select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
সিস্টেমের ডাটাবেসের কয়েকটি নাম (সংস্থান, বিতরণ, রিপোর্টসারিস, রিপোর্টসারিসটেম্পডিবি) কেবল এটি ক্যোয়ারিতে .োকান। ডিফল্ট হিসাবে আপনার মেশিনে যদি উপরের ডিবি থাকে।
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'
এটি উভয় শর্তে কাজ করবে, প্রতিবেদন সক্ষম আছে কি না
সিস্টেম ডাটাবেস নয় এবং স্ন্যাপশট নয় এমন ডাটাবেসগুলির একটি তালিকা পেতে আমি নিম্নলিখিত এসকিউএল সার্ভার ম্যানেজমেন্ট অবজেক্টস কোড ব্যবহার করি ।
using Microsoft.SqlServer.Management.Smo;
public static string[] GetDatabaseNames( string serverName )
{
var server = new Server( serverName );
return ( from Database database in server.Databases
where !database.IsSystemObject && !database.IsDatabaseSnapshot
select database.Name
).ToArray();
}
var DBsLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
অথবা foreach (var Db in new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases)
নেট নেট 4.0 + এসকিউএল সার্ভার ২০১৪ বা .এসকিএল সার্ভার.সোমো \ 12.0.0.0
আপনি যদি সিস্টেম ডেটাবেস এবং রিপোর্ট সার্ভার সারণী বাদ দিতে চান (যদি ইনস্টল থাকে):
select
DATABASE_NAME = db_name(s_mf.database_id)
from
sys.master_files s_mf
where
s_mf.state = 0 and -- ONLINE
has_dbaccess(db_name(s_mf.database_id)) = 1
and db_name(s_mf.database_id) NOT IN ('master', 'tempdb', 'model', 'msdb')
and db_name(s_mf.database_id) not like 'ReportServer%'
group by s_mf.database_id
order by 1
এটি এসকিএল সার্ভার ২০০৮/২০১৪4 এ কাজ করে। বেশিরভাগ ক্যোয়ারী " এসপি_ড্যাটাবেসগুলি " সিস্টেম সঞ্চিত পদ্ধতি থেকে আসে । আমি কেবল অপ্রয়োজনীয় কলামটি সরিয়েছি এবং যেখানে শর্ত রয়েছে added
নিশ্চিত না যে এটি রিপোর্ট সার্ভার ডেটাবেসগুলি বাদ দিবে যেহেতু আমি একটি চালাচ্ছি না, তবে যা আমি দেখেছি তা থেকে আমি এই এসকিউএল সহ সিস্টেম ব্যবহারকারীর মালিকানাধীন ডাটাবেসগুলি বাদ দিতে পারি:
SELECT db.[name] as dbname
FROM [master].[sys].[databases] db
LEFT OUTER JOIN [master].[sys].[sysusers] su on su.sid = db.owner_sid
WHERE su.sid is null
order by db.[name]
সম্ভবত আমি একটি ডোডো!
show databases;
আমার জন্য কাজ।
আপনি এটির সাথে সমস্ত ডাটাবেসের নামগুলি খুঁজে পেতে পারেন: -
select name from sys.sysdatabases
সিস্টেমের ডাটাবেসগুলি বাদ দিতে:
SELECT name FROM master.dbo.sysdatabases where sid <>0x01
sid
কলাম নেই sys.databases
এটিরowner_sid