2009-09-10 2 views
1

우리는 SQL을 사용하고 스크립트 파일을 가지고 데이터베이스와 테이블을 생성합니다. 모든 dev/prod 컴퓨터에서 실행될 일반 스크립트를 작성하려고합니다. 제공하는 파일 이름은 FILENAME = N'c : \ Program Files \ Microsoft SQL Server \ MSSQL.3 \ MSSQL \ DATA \ DBname입니다. .mdf '일반 데이터베이스 설정 스크립트

내 컴퓨터에서 작동하지만 모든 dev 컴퓨터에서 작동하지 않으므로 모두 SQL에 대한 경로가 다릅니다. 이 설정을 제네릭으로 만들 수있는 방법이 있습니까? 이 스크립트를 SQL 서버가 설치된 모든 시스템에서 실행되도록하고 싶습니다.

답변

1

다른 컴퓨터에서는 다른 폴더에 SQL Server 인스턴스가있는 것이 문제라고 생각합니다. 예를 들어 다른 지점에서 다음

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL 

예 항목

Name - Data 
MSSQLSERVER - MSSQL.1 
SQL2k5 - MSSQL.2 

그리고, :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup 

찾을 수 있습니다 당신은 폴더 인스턴스의 이름이 무엇인지 윈도우 등록에서 확인하실 수 있습니다 데이터 파일이있는 디렉토리 경로.

0

스크립트를 실행중인 위치에 따라 스크립트의 특정 부분을 구별해야하는 경우 SQLCMD를 사용할 수 있습니다.

데이터베이스 복원을 수행해야 할 때 과거에이 접근 방식을 사용하여 성공한 적이 있었으며 상자간에 데이터 경로가 다르다는 것을 알고있었습니다. 다음과 같은

뭔가 작업을해야합니다 :

SQLCMD -SMyDatabaseServer 
     -Q "RESTORE DATABASE $(DatabaseName) FROM DISK = '$(BackupLocation)\$(DatabaseName).bak' WITH NORECOVERY, STATS=10, REPLACE;" 
     -v 
     DatabaseName = MyDatabase 
     BackupLocation = "C:\SomeLocation" 
     -d master 
     -u [User] 
     -p [Password] 

이 인라인 쿼리 버전입니다. SQL 스크립트 파일로 작업해야하는 경우 -Q "..."섹션을 -i yourFile.sql로 변경하고 쿼리 자체를 복사하여 SQL 파일에 붙여 넣으십시오. SQLCMD는 -v 스위치로 정의 된 변수를 사용하고 -Q 또는 -i로 정의 된 쿼리에서 해당 변수를 대체합니다.

자세한 내용은 http://msdn.microsoft.com/en-us/library/ms180944.aspx을 참조하십시오.

관련 문제