SQL Server 인스턴스에서 사용 가능한 데이터베이스 목록을 얻으려면 어떻게해야합니까? VB.NET의 콤보 상자에 목록을 만들 계획입니다.
답변
실행 :
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');
보고 서비스 데이터베이스의 이름을 추가하십시오.
답변
시스템 데이터베이스를 제외하려면 다음을 수행하십시오.
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6
편집 : 오후 2시 36 분 2/5/2013
정확한 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에서 작동
답변
.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 * from sys.databases
사용자 정의 데이터베이스 만 필요한 경우
select * from sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
시스템 데이터베이스 이름 중 일부 (자원, 배포, 보고서 서비스, 보고서 서비스 템플릿)는 쿼리에 삽입합니다. 만약 당신의 머신에 위의 db가 기본값으로 있다면.
답변
SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 4 and [name] <> 'ReportServer' and [name] <> 'ReportServerTempDB'
이는보고 사용 여부에 관계없이 두 가지 조건 모두에서 작동합니다.