방금 DB에 삽입 한 FILESTREAM
데이터의 실제 위치 (Windows 탐색기에서 볼 수 있도록) 경로는 어떻게 알 수 있습니까?FILESTREAM 데이터의 물리적 위치
답변
먼저 FileStream이 SQL Server 2008 데이터베이스를 호스팅하는 서버에 저장되고 있음을 이해해야합니다. DBA가 있다면 어디서 FileStream을 만들 었는지 물어보십시오. 물론 서버를 탐색하여 디렉토리를 볼 수있는 권리가 필요합니다. 어떤 방법 으로든 파일을 조작 할 수는 없지만 파일을 볼 수는 있습니다. 대부분의 DBA는 FileStream의 위치를 알려주지 않습니다.
그러나 경로에 몇 가지 다른 방법으로 접근 할 수 있습니다. 마음에 떠오르는 한 가지 방법은 FileStream 필드의 PathName()을 선택하는 것입니다. FileStream 사용 필드가 ReportData이고 테이블이 상주하는 테이블이 TblReports라고 가정합니다.
select top 1 ReportData.PathName(0)
from dbo.datReport
난 당신이 또한 기업 관리자를 통해 다른 방법으로 경로를 얻을 수 있다고 생각하지만, 나는 어떻게 그 순간을 잊지 다음 T-SQL 구문은 위치로 UNC을 얻을 것입니다.
Pawel이 언급했듯이 Windows 탐색기를 사용하여 FILESTREAM 파일에 액세스하는 것은 좋지 않습니다. 계속 나아가이 문제를 탐색하기로 결정했다면 다음 팁이 도움이 될 것입니다.
FILESTREAM 파일 이름은 실제로 파일을 만들 때 데이터베이스 트랜잭션 로그의 로그 시퀀스 번호입니다. Paul Randal이 this post에서 설명했습니다. 따라서 하나의 옵션은 로그 시퀀스 번호를 찾아 파일 스트림 데이터 컨테이너에서 그 다음에 명명 된 파일을 찾는 것입니다.
나는 이것이 오래된 게시물 인 것을 알고 있지만 Google 검색 순위에서 여전히 높은 것으로 나타 났으므로 나는 답변을 게시 할 것이라고 생각했습니다. 물론 SQL의 이후 버전에서 다음과 같은 쿼리를 실행할 수 있습니다 (I 2008에이 시도하지했습니다) : 방법 PhysicalPathName() :
는SELECT t.name AS 'table',
c.name AS 'column',
fg.name AS 'filegroup_name',
dbf.type_desc AS 'type_description',
dbf.physical_name AS 'physical_location'
FROM sys.filegroups fg
INNER JOIN sys.database_files dbf
ON fg.data_space_id = dbf.data_space_id
INNER JOIN sys.tables t
ON fg.data_space_id = t.filestream_data_space_id
INNER JOIN sys.columns c
ON t.object_id = c.object_id
AND c.is_filestream = 1
이 하나 개의 옵션이 있습니다. 지금 SQL 서버 2012 또는 상단에있는 경우,이 코드는 당신을 위해 작동합니다
SELECT stream.PhysicalPathName() AS 'Path' FROM Media
OPTION (QUERYTRACEON 5556)
SQL 서버 2008/2008 R2의 경우는 전체 인스턴스에 대한 추적 플래그 5556을 활성화해야합니다 :
DBCC TRACEON (5556, -1)
GO
또는 특정 연결에있는 당신이 호출 PhysicalPathName() 메소드 :
DBCC TRACEON (5556, -1)
GO
--filestream 파일 경로
,536,SELECT col.PathName() AS path FROM tbl
- 1. SQL Server 2008의 Filestream 위치
- 2. ASP .net 현재 물리적 위치
- 3. SQL Server FILESTREAM 저장소
- 4. filestream 데이터 암호화
- 5. 물리적 캐시
- 6. FILESTREAM 및 분할 된 저장소
- 7. DeleteOnClose 파일 옵션이있는 FileStream
- 8. SQL 2008 filestream
- 9. FileUpload to FileStream
- 10. FileStream 대/차이 StreamWriter?
- 11. FileStream 및 인코딩
- 12. FileStream 상단에 데이터 추가
- 13. FileStream throw UnauthorisedAccessException - C#
- 14. FileStream 사용 중
- 15. Filestream 특성이 지원되는 형식
- 16. FileStream 및 BinaryReader Disposal
- 17. 파일 이름에 querystring이있는 FileStream?
- 18. 실버 라이트 4.0하여 FileStream
- 19. Delphi, FileStream 및 MemoryStream
- 20. System.Threading.Tasks 및 FileStream
- 21. 가변 길이의 물리적 주소
- 22. 이진 데이터와 문자 데이터의 혼동
- 23. Sql 2008 Filestream with NHibernate
- 24. Azure Embedded Binary Resource (FileStream?)
- 25. File() 웹 응용 프로그램의 FileStream
- 26. 스트리밍 API를 통한 FILESTREAM 액세스
- 27. varuinary FileStream 필드에 Fileupload ASP.net
- 28. SQL Server 2008 Express의 Filestream
- 29. SQL filestream 인증 우수 사례
- 30. Sql Server Filestream 액세스가 거부되었습니다.
왜 필요한가요? 파일 스트림 파일을 일반 파일로 액세스하는 것은 권장하지 않습니다. 기본적으로 이러한 파일에 대한 액세스 권한도 없습니다. mdf 파일에서 방금 데이터베이스 테이블에 삽입 한 값을 어디에서 찾을 수 있는지 묻는 것과 같습니다. 제공된 API를 통하는 대신 직접 파일 스트림 파일을 변조하면 데이터베이스를 손쉽게 손상시킬 수 있습니다. –