2011-11-16 4 views
4

웹 응용 프로그램을 개발 중입니다. 데이터베이스 파일 경로를 가져와야합니다. C#에서 데이터베이스 파일 경로를 가져 오는 방법은 무엇입니까? 예를 들어 :현재 연결된 데이터베이스 파일 경로를 얻는 방법은 무엇입니까?

E:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Data/MyDatabase.mdf 
+3

왜이 질문에 asp.net 태그가 지정되어 있습니까? 이것은 ASP보다 SQL Server와 관련이 있습니다. –

+0

@Merlyn, 내 프로젝트가 데이터베이스와 연결되어 있고 ConnectionString이 webconfig에 명시되어 있습니다. 그래서 내가 웹 설정을 통해 데이터베이스 경로를 얻을 수 있는지 궁금 해서요. :) – DEN

+0

@DEN 당신은'web.config'에서'connectionString'을 사용하여 데이터베이스에 대해 쿼리를 실행할 수 있습니다. 아래 내 대답을 참조하십시오. –

답변

12
select physical_name 
from sys.database_files 
where type = 0 

위 실행하는 SQL 쿼리가 반환됩니다. 다음은이 데이터를 검색하여이 데이터를 string에 저장하고 저장하는 코드입니다.

SqlConnection DbConn = new SqlConnection(ConfigurationManager.ConnectionStrings["CStringName"].ConnectionString); 
SqlCommand GetDataFile = new SqlCommand(); 
GetDataFile.Connection = DbConn; 
GetDataFile.CommandText = "select physical_name from sys.database_files where type = 0"; 

try 
{ 
    DbConn.Open(); 
    string YourDataFile = (string) GetDataFile.ExecuteScalar(); 
    DbConn.Close(); 
} 
catch (Exception ex) 
{ 
    DbConn.Dispose(); 
} 
-1

Server.mappath 경로를

+2

MapPath는 서버의 가상 경로와 실제 경로를 매핑합니다. mdf 파일에 대한 가상 경로가 없습니다. – Jason

+0

SQL Server가 웹 사이트와 동일한 컴퓨터에서 실행되고 있다고 가정합니다.이 경우는 그렇지 않을 수도 있습니다. 또한 Server.MapPath는 실제로 가상 디렉터리 계층 구조 외부에있는 파일 경로에 사용하기위한 것이 아닙니다 (가능할 수도 있음). 자세한 내용은 여기를 참조하십시오. http://stackoverflow.com/questions/3422270/how -to-use-server-mappath-to-get-location-outside-website-folder-in-asp-net – Rich

+1

@Jason : 적어도 거기에는 없어야합니다 ... –

관련 문제