SQL Server에서 데이터베이스 목록 가져오기
SQL Server 인스턴스에서 사용 가능한 데이터베이스 목록을 가져오려면 어떻게 해야 합니까?VB에서 콤보박스로 목록을 만들 예정입니다.그물.
실행:
SELECT name FROM master.sys.databases
이것은 현재 권장되는 접근법입니다.dbo.sysdatabases
이 기능은 한동안 사용되지 않았습니다.
다음 쿼리를 실행합니다.
SELECT name FROM master.dbo.sysdatabases
또는 당신이 원한다면
EXEC sp_databases
비사용자 데이터베이스의 수에 관한 불명확한 점에 비추어 다음과 같이 추가할 필요가 있습니다.
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
Reporting Services 데이터베이스의 이름을 추가합니다.
시스템 데이터베이스를 제외하려면:
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6
편집일 : 2013년 2월 5일 오후 2시 36분
정확한 database_id로 갱신되어 데이터베이스 ID가 1~4인 시스템 데이터베이스 목록을 건너뛰려면 4보다 커야 합니다.
SELECT *
FROM sys.databases d
WHERE d.database_id > 4
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4
SQL Server 2008에서 동작합니다.
아래 쿼리를 사용하여 모든 데이터베이스를 가져옵니다.
select * from sys.databases
사용자 정의 데이터베이스만 필요한 경우
select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
시스템 데이터베이스 이름 중 일부는 (resource, distribution, reportservice, reportservicetempdb) 위의 db가 기본적으로 시스템에 있는 경우 쿼리에 삽입합니다.
사용하고 있기 때문에.NET SQL Server 관리 개체를 사용할 수 있습니다.
Dim server As New Microsoft.SqlServer.Management.Smo.Server("localhost")
For Each db As Database In server.Databases
Console.WriteLine(db.Name)
Next
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'
이 조작은, 리포트 사용의 유무에 관계없이, 양쪽 모두의 조건에 대응합니다.
다음 SQL Server Management Objects 코드를 사용하여 시스템 데이터베이스 및 스냅샷이 아닌 데이터베이스 목록을 가져옵니다.
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();
}
시스템 데이터베이스 및 ReportServer 테이블을 생략하는 경우(설치된 경우)
select DATABASE_NAME = db_name(s_mf.database_id)
from sys.master_files s_mf
where
s_mf.state = 0 -- ONLINE
and 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;
이 기능은 SQL Server 2008/2012/2014에서 작동합니다.대부분의 쿼리는 "sp_databases" 시스템 저장 프로시저에서 가져옵니다.불필요한 컬럼만 삭제하고 조건을 추가했습니다.
Report 서버 데이터베이스를 실행하고 있지 않기 때문에 생략할 수 있을지 어떨지는 모르겠지만, 제가 본 바로는 다음 SQL을 사용하여 시스템 사용자 소유 데이터베이스를 생략할 수 있습니다.
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]
SQL Server 7에서는 dbid 1 ~4가 시스템 dbs입니다.
내가 도도새일지도 몰라!
show databases;
날 위해 일했어
MYSQL에서 데이터베이스를 나열하는 명령을 찾는 경우 다음 명령을 사용하십시오.SQL Server 로그인 후
show databases;
시스템 데이터베이스를 제외하려면:
SELECT name FROM master.dbo.sysdatabases where sid <>0x01
언급URL : https://stackoverflow.com/questions/147659/get-list-of-databases-from-sql-server
'programing' 카테고리의 다른 글
를 사용하여 사람이 읽을 수 있는 파일사이즈(바이트 단위)를 얻으려면 어떻게 해야 하나요?인터넷? (0) | 2023.04.07 |
---|---|
ON [PRIMAY]는 무슨 뜻입니까? (0) | 2023.04.07 |
JSON 개체를 구문 분석하는 동안 NoClassDefFoundError JsonAutoDetect가 발생했습니다. (0) | 2023.03.18 |
Wordpress - 편집기에 html/텍스트 삽입 (0) | 2023.03.18 |
ngpattern을 사용하여 자연 입력 번호 확인 (0) | 2023.03.08 |