2009-10-28 5 views
2

원격 컴퓨터에서 실행중인 데이터베이스 인스턴스에서 MS SQL Server 데이터베이스를 만들려고합니다. 내가 그렇게 할 때 데이터베이스 (.mdf) 파일의 경로를 지정할 수 있어야합니다. 존재하지 않는 폴더에 데이터베이스를 만들려고하면 SQL Server가 실패합니다 (자동으로 폴더 구조를 만든 경우에는 좋지 않습니다).원격 컴퓨터에서 SQL Server 데이터베이스 만들기 mdf 파일 경로 문제

데이터베이스를 만들려고하기 전에 SQL의 대상 컴퓨터에서 폴더 경로를 만들 수있는 방법이 있습니까? 아니면 최소한 새 데이터베이스를 안전하게 만들 수있는 새 데이터베이스의 기본 폴더를 결정해야합니까? 데이터베이스 파일?

답변

2

당신이 적절한 권한을 가지고 있고, xp_cmdshell을 사용할 수있는 경우, 당신은 할 수 있습니다

http://aspfaq.com/sql2005/show.asp?id=29

: cmdshell 다시 적절한 권한을 가정하고, 사용하지

EXEC xp_cmdshell 'md "<path>"'; 
--...repeat for each node in the path 

경우 임시 sp_configure를을 사용하여 활성화 할 수 있습니다

다시 설정하는 것을 잊지 마십시오!

그렇지 않으면 엔진이 기본 위치에 데이터베이스 파일을 놓을 수없는 이유는 무엇입니까? C : 이외의 드라이브를 사용하는 경우 지정한 드라이브가 존재하는지 확인해야하며,이 파일을 다른 위치에 두어도 괜찮은지 사용자에게 확인하지 않아야합니다. 임의의 위치를 ​​선택하면 활성 SQL Server 파일을 확인하지 못할 수 있습니다. 이 기본 인스턴스가 아니라면

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer 

:

당신이이 아래의 기본 인스턴스에 대한 키 DefaultDataDir 및 DefaultLogDir 같은 레지스트리에있는 공격자는 xp_regread (문서화, 지원되지 않는) ...을 사용하여 기본 경로를 확인할 수 있습니다 이 문서 확인 : 당신이 당신의 MDF/LDF는 당신이 원하는 방식으로 파일 이름을 지정할 수 있습니다 단지 있도록

http://foxtricks.blogspot.com/2009/06/how-to-determine-default-database-path.html

가 대신 DBNAME - 데이터, 이러는를 DBNAME 로그? 그렇다면 왜? 파일의 실제 이름에 의존하는 스크립트를 작성 했습니까? 이 일의 동기 부여에 관해서는 정말 궁금합니다.

+0

질문은 약간 단순화되었습니다. 파일 경로 제어의 주된 동기는 다른 데이터베이스에있는 다른 부분을 다른 드라이브에 배포해야한다는 것입니다 (다른 스핀들에 ldf 및 mdf를 유지하는 것). – homeInAStar

+0

그래서 먼저 C : \ in play. 아마도 xp_fixeddrives 나 비슷한 것을 실행할 필요가있을 것입니다. 일반적으로이 항목을 사용자 정의해야 할 때 UI를 제공하고 사용자가 위치를 선택할 수 있습니다. SQL Server의 기본 데이터베이스 작성 UI와 달리 파일을 다른 드라이브에 저장하는 것이 좋습니다. 그러나 이용 가능한 드라이브 문자가 하나 뿐인 경우 ... –

관련 문제