Làm cách nào để thay đổi loại máy chủ mục tiêu cho mẫu theo dõi?


7

Tôi đã có một mẫu theo dõi SQL Server Profiler .tdf mà ai đó muốn tôi chạy nhưng mẫu đang nhắm mục tiêu SS 2008 R2. Trong khi SSMS của tôi là 2008 R2, máy chủ tôi cần theo dõi là SS 2005. Khi cố gắng theo dõi máy chủ, loại máy chủ bị khóa (được tạo từ máy chủ thực tế) vì vậy tôi không thể chọn mẫu tôi cần trong khi nó được đánh dấu là phiên bản SS khác nhau ..

Cửa sổ thuộc tính mẫu dấu vết

Làm cách nào tôi có thể thay đổi loại máy chủ mà mẫu giao dịch đang nhắm mục tiêu? Tôi đã thử File > Templates > Edit Templates...nhưng dường như không có tùy chọn nào để thay đổi điều này. Có thể thay đổi phiên bản máy chủ đích hay toàn bộ dấu vết phải được thực hiện lại từ đầu?

Câu trả lời:


6

Nếu bạn mở Profiler, hãy đi tới Tệp> Mẫu> Nhập và chọn tệp .tdf của bạn.

Bạn sẽ có một mẫu theo dõi người dùng mới với tên [tên tệp] (không có .tdf). Đi tới Tệp> Mẫu> Chỉnh sửa và chọn mẫu theo dõi bạn đã nhập. Sau đó, bạn có thể chỉnh sửa loại máy chủ bằng cách kéo thả xuống:

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể lưu mẫu và đó phải là loại máy chủ khi bạn bắt đầu theo dõi mới bằng cách sử dụng mẫu đó.


Được rồi, làm việc đó. Điều quan trọng cần lưu ý là khi bạn chọn loại máy chủ khác, tên mẫu sẽ biến mất (nó lọc lại các mẫu để hiển thị cho bạn các mẫu của loại máy chủ đã chọn), nhưng nếu bạn lưu thì nó sẽ chỉnh sửa mẫu đã chọn. Mất phương hướng, nhưng bây giờ tôi biết.
Ben Brocka

@Ben Vâng thật kỳ lạ. Hồ sơ về khối chặt - nắm lấy các sự kiện mở rộng ngay bây giờ.
Aaron Bertrand

Tôi đã phải sử dụng kỹ thuật được đề xuất bởi @ mcw0933 bên dưới.
Jeff

Điều này dường như không còn hoạt động nữa; Khi tôi chuyển đổi giữa các loại máy chủ, nó sẽ tự động chọn mẫu "mặc định" cho loại đó.
KutuluMike

6

Tôi đang sử dụng Profiler 2012, nói chuyện với cơ sở dữ liệu 2008, 2008 R2 và 2012. Tôi đã phải sử dụng một quy trình làm việc hơi khác so với câu trả lời được chấp nhận .

Khi tôi cố gắng thực hiện theo quy trình công việc đó, để di chuyển một mẫu từ 2008 đến 2012, trình đơn thả xuống Chọn tên mẫu sẽ tắt và bấm Lưu hoặc Lưu dưới dạng nhắc tôi chọn một mẫu để lưu.

nhập mô tả hình ảnh ở đây

Thay vào đó, hãy sao chép mẫu của bạn từ profiler 2012, thư mục mẫu 2008 (nên %APPDATA%\Microsoft\SQL Profiler\11.0\Templates\Microsoft SQL Server\100) vào profiler 2012, thư mục mẫu 2012 (nên %APPDATA%\Microsoft\SQL Profiler\11.0\Templates\Microsoft SQL Server\110)

Bây giờ, đi đến File > New Trace...và chọn mẫu đã sao chép để thực hiện theo dõi trên máy chủ 2012. Xác nhận dấu vết đang chạy và nắm bắt những gì bạn muốn.

Tại thời điểm này, bạn khá tốt - bạn có thể sử dụng mẫu được sao chép để bắt đầu theo dõi. Nhưng nếu bạn muốn thực hiện sửa đổi trên nó, khi bạn đi đến File > Templates > Edit Template...và chọn Sự kiện Chọn, bạn sẽ nhận được một dấu nhắc cho biết dấu vết ở định dạng sai:

nhập mô tả hình ảnh ở đây

Để lưu nó trong định dạng mới: bắt đầu các dấu vết hoạt động sử dụng File > New Trace...như đã đề cập ở trên, sau đó với các dấu vết hoạt động làm File > Save As > Trace Template...và chọn một cái tên mới. Bây giờ bạn có thể xóa mẫu được sao chép ban đầu và sử dụng mẫu mới được lưu ở vị trí của nó.


2
Kỹ thuật này làm việc cho tôi, trong khi câu trả lời được chấp nhận thì không.
Jeff

2

Trên thực tế chỉ cần thay đổi hai byte trong tệp tdf. Tôi đã tạo một tập lệnh PowerShell nhỏ để làm điều đó. mssql.profiler.template.sql_ver.chg.ps1 (GitHub)

<# 
.SYNOPSIS
    Changing sql server target version in *.tdf (profiler trace template) file.
.DESCRIPTION
    Changing sql server target version in *.tdf (trace template) file.
    To create *.tdf go to <SQL Server Profiler>\"File"\"Templates"\"Export Template...". To load *.tdf into templates list go to <SQL Server Profiler>\"File"\"Templates"\"Import Template..."
.PARAMETER iPath
    Source *.tdf file.
.PARAMETER iPathNew
    Destination *.tdf file. If ommitted then file $iPath will be rewrited. If file $iPathNew exists it will be overwrited.
.PARAMETER iVerNew
    Required target MS SQL Version for trace template in format 'X.X' or 'X'.
    Eg: 10.5 for MS SQL Server 2008 R2, 11 for MS SQL Server 2012. You can google it with query "ms sql versions".
.INPUTS
    <none>
.OUTPUTS
    <none>
.EXAMPLE
    mssql.profiler.template.sql_ver.chg.ps1 try_105.tdf try_13.tdf 13
    Will create file try_13.tdf with target sql server 2016 (version 13.0).
.LINK
    https://github.com/TEH30P/MSSQL.Profiler
#>

param
(   [parameter(Mandatory=1, position=0)][String]$iPath
,   [parameter(Mandatory=0, position=1)][String]$iPathNew
,   [parameter(Mandatory=0, position=2)][String]$iVerNew
)

try {

if ([IO.Path]::GetExtension($iPath) -ne '.tdf')
{   [String]$Answ = Read-Host -Prompt 'It is not a *.tdf file. Are you sure? {Y|[N]}';

    if (!$Answ.Length -or $Answ -eq 'N')
    {   throw 'Canceled'}
}

[String]$PathAbs = (Convert-Path $iPath);
[Byte[]]$aBuff = [IO.File]::ReadAllBytes($PathAbs);

if ($aBuff.Count -le 391)
{   throw 'File is to small. Possible corrupted.'}

if ([String]::IsNullOrEmpty($iVerNew))
{   $iVerNew = Read-Host -Prompt "Current version is $($aBuff[390]).$($aBuff[391]). Enter new version:";

    if (!$iVerNew.Length)
    {   throw 'Canceled'}
}

[Version]$Ver = New-Object Version;
[UInt32]$VerMajor = 0;
[UInt32]$VerMinor = 0;

if (![UInt32]::TryParse($iVerNew, [ref]$VerMajor))
{   [Version]$iVerNew | % {$VerMajor = $_.Major; $VerMinor = "$($_.Minor)0".Substring(0,2)}}

$aBuff[390] = $VerMajor;
$aBuff[391] = $VerMinor;

if (![String]::IsNullOrEmpty($iPathNew))
{   [String]$PathAbs = (Convert-Path $iPathNew)}

[IO.File]::WriteAllBytes($PathAbs, $aBuff);

} catch 
{   throw}

1
Cảm ơn, điều này rất hữu ích vì các phiên bản mới hơn của Profiler dường như ít khoan dung hơn với các phiên bản mẫu không khớp. Thay vì sử dụng tập lệnh của bạn, tôi đã sao chép một mẫu năm 2016 từ 130thư mục vào 140thư mục và sau đó mở nó trong trình soạn thảo hex và thay đổi byte ở offset 390 từ 0x0D(13 - v2016) thành 0x0E(14 - v2017). Khá dễ.
Nick

Chỉnh sửa hex cũng làm việc với tôi, thay đổi byte bù 390 (0x186) từ 0x0B thành 0x0E. Phải làm điều này là rất ngu ngốc, nhưng cảm ơn cho các phím tắt.
Nick Westgate
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.