2016-06-17 3 views
0

기술적으로 순진한 권한이없는 사용자가 새 SQL Server 데이터베이스를 만들고 .mdf 파일 형식으로받을 수 있도록 프로그램을 작성하려고합니다. 나는 .mdf 파일이 실제로 데이터베이스 백업처럼 취급되지 않는다는 것을 이해하지만이 방법으로 이렇게 작동하는 기존 상용 소프트웨어와의 호환성을 유지해야합니다. 나는 프로그램이 SQL Server 버전은 내가 무엇을 발견 적어도 2008 년새로운 mdf 파일에 대한 사용 권한

로 되돌아가는 일을 할 수 있도록하고 싶습니다하지만

나는, 비주얼 스튜디오 2013 및 SQL Server 2014을 내가 할 수있는 것으로되어 사용하고 있습니다 이 MSSQL$SQLEXPRESS에 (내가 생각하는)에 속하는 끝나는 때문에 '는 t는

CREATE DATABASE XXXXX on 
(NAME=<name>,FILENAME=<filename>') 

에 의해 생성 된 .mdf 파일을 복사합니다. 제가 '생각합니다'라고 말하는 이유는 파일 속성으로 이동하여 관리자 권한을 수락하면 소유자에게 '현재 소유자를 표시 할 수 없습니다.'라고 표시됩니다. 파일 소유권은 양도 할 수 있지만 관리자 권한 만 사용해야합니다.

관리자 권한이 없으면 .MDF 파일을 복사 할 수 없습니다. 권한이없는 파일을 만들 수 있다는 점을 감안하면 상당히 우스운 것 같습니다. 내 사용자의 App_Data 폴더 아래에있는 폴더에 파일을 만들려고했는데 하위 폴더 및 파일에 대한 모든 사용자의 모든 권한을 사용했지만 도움이되지 않았습니다.

아무도 나에게 권한이없는 사용자가이 파일을 사용할 수 있도록 (프로그래밍 방식으로) 할 수 있다고 제안 할 수 있습니까?

많은 도움에 감사드립니다.

답변

0

시도 MDF 파일을 복사하기 전에 스크립트를 다음

USE [master] 
GO 
EXEC master.dbo.sp_detach_db @dbname = N'DatabaseName'; 
GO 

그것은 SQL 서버에서 데이터베이스를 분리하고 당신이 시스템 내에서 일반 파일로 파일의 처리 할 수 ​​있습니다.
복사 한 후 "sp_attach_db"으로 데이터베이스를 다시 연결해야합니다.
해당 기간 동안 데이터베이스는 SQL Server에 표시되지 않습니다. 변수에 데이터 파일의

USE [master] 
GO 
EXEC master.dbo.sp_attach_db @dbname = N'DatabaseName' 
    , @filename1 = 'C:\Data\Datfile.mdf'; 
    , @filename2 = 'C:\Data\Logfile.ldf'; 
GO 
0
  1. 먼저 GET 위치, 당신은 분리 후 easly 거기에서 이동할 수 있도록.

    select a.filename from sys.sysfiles a inner join sys.master_files b on a.fileid=b.file_id 
    where b.database_id=db_id('DB_NAME') 
    
  2. 데이터베이스와 열린 세션이 있는지 확인하십시오. 그런 다음 데이터베이스 이제

    USE [master] 
    GO 
    EXEC master.dbo.sp_detach_db 'DB_NAME'; 
    
  3. 를 분리

  4. 을 [SPID를 죽일]를 사용하여

    select spid from sysprocesses where dbid=db_id('DB_NAME') 
    
  5. 죽여 모든 세션은 소스에서 데이터베이스를 이동할 수 있습니다 원하는 목적지까지 변수에 만들었 었지 .

  6. 이제 다른 서버에 데이터베이스를 연결하려고합니다.

    <안녕, 시작 = "6">
  7. 당신이 디렉토리를 분리해서하는 .LDF과의 .mdf를 이동 한 경우는 같은 디렉토리

    USE [master] 
    GO 
    EXEC master.dbo.sp_attach_db @dbname = 'DB_NAME', @filename1 = 'C:\Data\Datfile.mdf'; 
    
  8. 에 모두 .LDF과의 .mdf 이동합니다.

Slava Murygin이 제안한 스크립트를 사용하여 데이터베이스를 연결하십시오.

감사합니다.

+0

도움 주셔서 감사합니다. 나는 파일이 데이터베이스에 여전히 첨부되어있는 것이 아니라 파일 권한으로 문제가 있다고 생각하면서 잘못된 위치를 찾고있었습니다. – Jonathan