2017-09-05 1 views
0

SQL Server 성능 정보를 Excel 스프레드 시트에 요약하는 도구를 작성하고 있습니다. 이러한 정보 중 일부는 XML로 인코딩 될 수있는 SQL Server 실행 계획을 포함합니다. SQL Server Management Studio는 이러한 XML 문서가 포함 된 파일을 인식하고이를 그래픽으로 표시 할 수 있습니다. 내 질문은 관리 Studio에서 계획을 여는 Excel에서 하이퍼 링크 셀을 만들 수 있는지 여부입니다.Excel 워크 시트의 Showplan XML 링크?

전에 이런 일은 해 본 적이 없습니다. (제 배경은 Unix 시스템 소프트웨어를 작성하는 것입니다.) DDE (Dynamic Data Exchange) 프로토콜이 응답을 보유 할 수있는 것처럼 보이므로 현재 조사 중입니다.

+1

후 그냥 열어야합니다 파일에 하이퍼 링크 : 나는 그것을에서의 셀을 채우는 "링크"를 만들기 위해,이에 위의 코드를 따라 기본 응용 프로그램에서 자동으로 실행됩니다. –

+0

Excel 통합 문서를 자체 포함 된 상태로 유지하고 싶지만, 반면에 귀하의 접근 방식은 수행 방법을 알고 있습니다. –

답변

0

이렇게하면 어떻게하는지 알게되면 매우 간단합니다. DDE 대신 OLE 임베딩을 사용했습니다. 포함 기능을 사용하면 Excel 통합 문서가 Unix 타르 파일이나 Windows zip 파일과 비슷한 형태로 바뀝니다. 하나의 파일에 다른 파일이 들어 있습니다.

먼저 XML 텍스트를 .sqlplan 확장자와 함께 임시 파일에 씁니다. 둘째,이 코드를 호출

$object = $ws.OLEObjects().Add(
     [System.Type]::missing, # ClassType 
     $path,     # FileName 
     $false,     # Link 
     $false,     # DisplayAsIcon 
     [System.Type]::missing, # IconFileName 
     [System.Type]::missing, # IconIndex 
     [System.Type]::missing, # IconLabel 
     [System.Type]::missing, # Left 
     [System.Type]::missing, # Width 
     [System.Type]::missing, # Height 
     [System.Type]::missing # Top 
    ) 

경우 임시 파일을 $path 점. 셋째, 임시 파일을 삭제합니다. "Link"매개 변수가 $false이기 때문에 XML 파일의 복사본이 이제 통합 문서의 일부가됩니다.

위의 설명과 함께 Martin Smith가 제안한 것일 수 있습니다. .sqlplan 파일이 통합 파일 외부에 일반 파일로 저장된다고 말합니다. 또한 이것은 스프레드 시트에 임베드하고 싶은 파일 종류와 함께 사용할 수 있습니다.

생성 시점에 크기와 위치를 설정하지 않은 이유는 그 시점에서 사각형을 만들 수 없기 때문입니다. 당신은`.sqlplan` 확장자를 가진 별도의 파일로 실행 계획을 작성하는 경우

$object.ShapeRange.LockAspectRatio = $false 
$cell = $range.Cells($cellRow, $cellColumn) 
$object.Left = $cell.Left 
$object.Width = $cell.Width 
$object.Height = $cell.Height 
$object.Top = $cell.Top 
관련 문제