среда, 6 марта 2013 г.

Необходимые знания и навыки для сдачи экзамена MS 70-462

Аналогичный предыдущему слайд скиллов для сдачи экзамена 70-462 Administering Microsoft SQL Server 2012 Databases.



Необходимые знания и навыки для сдачи экзамена MS 70-496

Составил и отобразил в наглядной форме все скиллы, необходимые для сдачи экзамена 70-496 Administering Visual Studio Team Foundation Server 2012. Делал для себя, для сдачи экзамена, но возможно кому-то ещё пригодится.




суббота, 26 января 2013 г.

T-SQL Информация о резервных копиях для баз

Информация по резервированию для указанной базы за последние n-дней

-- Имя базы данных
DECLARE @database_name char(100) ='NameDatabase'

-- Сколько дней от текущей даты нужно анализировать
DECLARE @day int = 1

SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name as 'Database name',  
   CASE msdb..backupset.type  
       WHEN 'D' THEN 'Database'  
       WHEN 'L' THEN 'Log'  
   END AS backup_type,  
   msdb.dbo.backupset.backup_size,  
   convert(varchar, dateadd(s, datediff (s, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date), convert(datetime2, '0001-01-01')), 108) as backup_duration,  
   msdb.dbo.backupset.backup_start_date AS Start_backup,  
   msdb.dbo.backupset.backup_finish_date AS Finish_backup, 
   msdb.dbo.backupmediafamily.physical_device_name, 
   msdb.dbo.backupmediafamily.logical_device_name,       
   msdb.dbo.backupset.name AS backupset_name, 
   msdb.dbo.backupset.description,
   msdb.dbo.backupset.expiration_date AS Expiration_backup
FROM   msdb.dbo.backupmediafamily  
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE  (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - @day) and msdb.dbo.backupset.database_name = @database_name
ORDER BY  
   msdb.dbo.backupset.database_name, 
   msdb.dbo.backupset.backup_finish_date desc


Информация о последней сделанной резервной копии для всех баз данных на SQL-сервере



SELECT  
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name,  
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 
FROM   msdb.dbo.backupmediafamily  
   INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
 INNER JOIN sys.sysdatabases ON sys.sysdatabases.name = msdb.dbo.backupset.database_name
WHERE  msdb..backupset.type = 'D' 
GROUP BY 
   msdb.dbo.backupset.database_name  
ORDER BY  
   last_db_backup_date 



Список баз данных с количеством часов, которое прошло с последней сделанной резервной копии (базы, которые резервировались за последние 24 часа, в список не попадают)


SELECT 
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 
   msdb.dbo.backupset.database_name, 
   MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date, 
   DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date), GETDATE()) AS [Backup Age (Hours)] 
FROM  master.dbo.sysdatabases AS M LEFT JOIN msdb.dbo.backupset ON M.Name =  msdb.dbo.backupset.database_name
WHERE     msdb.dbo.backupset.type = 'D'  
GROUP BY msdb.dbo.backupset.database_name 
HAVING      (MAX(msdb.dbo.backupset.backup_finish_date) < DATEADD(hh, - 24, GETDATE()))  

UNION  

SELECT      
   CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,  
   M.NAME AS database_name,  
   NULL AS [Last Data Backup Date],  
   9999 AS [Backup Age (Hours)]  
FROM 
   master.dbo.sysdatabases AS M LEFT JOIN msdb.dbo.backupset 
       ON M.name  = msdb.dbo.backupset.database_name 
WHERE msdb.dbo.backupset.database_name IS NULL AND M.name <> 'tempdb' 
ORDER BY  
   msdb.dbo.backupset.database_name


Источник: http://www.mssqltips.com/sqlservertip/1601/script-to-retrieve-sql-server-database-backup-history-and-no-backups/

четверг, 17 января 2013 г.

Настройка прогнозирования (Forecasting) в бэклоге TFS 2012

Настройка прогнозирования в бэклоге настраивается в конфиге CommonConfiguration.xml. В разделе TypeFields задаётся поле с типом "Effort".

  <TypeFields>
     ...
    <TypeField refname="Microsoft.VSTS.Scheduling.Size" type="Effort" />
    <TypeField refname="Microsoft.VSTS.Common.Discipline" type="Activity" />
    <TypeField refname="Microsoft.VSTS.Feedback.ApplicationStartInformation" type="ApplicationStartInformation" />
     ...
  </TypeFields>

Вы можете указать здесь другое поле для Forecasting.


понедельник, 14 января 2013 г.

Выгрузка конфигов (Categories, AgileProcessConfig, CommonConfiguration) с помощью PowerShell

cls
cd 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE'

# Указать путь к папке, куда будут выгружаться и откуда загружаться конфиги
$fld='C:\Temp'

# Указать Uri TFS коллекции
$srv='http://tfs:8080/tfs/CollectionName'

# Указать имена проектов (может быть один)
$projects=@('TFSProject1','TFSProject2')

if (!(Test-Path $fld)){
new-item -type directory -path $fld
}
    write-host '[0] - Выгрузка всех конфигов (Categories, AgileProcessConfig, CommonConfiguration)'
    write-host '-------------------------'
    write-host '[1] - Выгрузка Categories'
    write-host '[2] - Выгрузка AgileProcessConfig'
    write-host '[3] - Выгрузка CommonConfiguration'  
    write-host '-------------------------'
    write-host '[5] - Загрузка всех конфигов (Categories, AgileProcessConfig, CommonConfiguration)'  
    write-host '-------------------------'
    write-host '[6] - Загрузка Categories'
    write-host '[7] - Загрузка AgileProcessConfig'
    write-host '[8] - Загрузка CommonConfiguration'      
    $action = read-host "Выберите действие: "

# Выгрузка шаблонов
foreach ($p in $projects)
{
    write-host ' '
    write-host '---------- '            
    write-host 'Проект ' -nonewline
    write-host $p -nonewline -foregroundcolor Red
    write-host '... '
    write-host ' '      

    if ($action -eq '0')
    {    
        write-host 'Выгрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcategories /collection:$srv /p:$p /f:$fld"\["$p"]_categories.xml"
        write-host 'Выгрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportagileprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_AgileConfiguration.xml"
        write-host 'Выгрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcommonprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_CommonConfiguration.xml"
    }
    elseif ($action -eq '1')
    {    
        write-host 'Выгрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcategories /collection:$srv /p:$p /f:$fld"\["$p"]_categories.xml"
    }
    elseif  ($action -eq '2')
    {
        write-host 'Выгрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportagileprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_AgileConfiguration.xml"
    }
    elseif  ($action -eq '3')
    {
        write-host 'Выгрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin exportcommonprocessconfig /collection:$srv /p:$p /f:$fld"\["$p"]_CommonConfiguration.xml"
       
    }
    elseif  ($action -eq '5')
    {
        write-host 'Загрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importcategories /collection:$srv /p:$p /f:$fld"\categories.xml"
        write-host 'Загрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importagileprocessconfig /collection:$srv /p:$p /f:$fld"\AgileConfiguration.xml"                  
        write-host 'Загрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host  ': ' -nonewline
        .\witadmin importcommonprocessconfig /collection:$srv /p:$p /f:$fld"\CommonConfiguration.xml"      
    }  
   
    elseif  ($action -eq '6')
    {
        write-host 'Загрузка Categories ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importcategories /collection:$srv /p:$p /f:$fld"\categories.xml"
    }
    elseif  ($action -eq '7')
    {
        write-host 'Загрузка AgileProcessConfig ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host ': ' -nonewline
        .\witadmin importagileprocessconfig /collection:$srv /p:$p /f:$fld"\AgileConfiguration.xml"                  
    }
    elseif  ($action -eq '8')
    {
        write-host 'Загрузка CommonConfiguration ' -nonewline
        write-host ' ' -nonewline -foregroundcolor Red
        write-host  ': ' -nonewline
        .\witadmin importcommonprocessconfig /collection:$srv /p:$p /f:$fld"\CommonConfiguration.xml"
    }      
}

суббота, 12 января 2013 г.

Просмотр списка проектов в коллекции с помощью PowerShell

Cls

# Здесь указать Uri к TFS коллекции

$srv='http://tfs:8080/tfs/CollectionName' 

$Assem = ( 

    "Microsoft.TeamFoundation.Client, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" , 
    "Microsoft.TeamFoundation.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"          
    ) 

$Source = @" 

using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.Common;
using System.Text;


namespace LP

{ 
    public class Program  
    {
        public Program()     
        {
        }
     
        public void Get(string url) 
        { 
            TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri (url));
            ICommonStructureService css = (ICommonStructureService)tfs.GetService(typeof(ICommonStructureService));
            
            List<string> list = new List<string>();

            foreach (ProjectInfo projectInfo in css.ListAllProjects())

            {              
                list.Add(projectInfo.Name);                
            }

            list.Sort();

            
                foreach (string value in list)
                {
                    //Console.Write("'");                                        
                    Console.WriteLine(value);
                    //Console.Write("',");

                }                                      

        }          
    } 
} 
"@

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp  


$LT = New-Object LP.Program

$LT.Get($srv)

четверг, 13 сентября 2012 г.

Другие полезные команды PowerShell для Active Directory


cls
Import-Module ActiveDirectory

# Просмотр всех участников определённой доменной группы
GET-ADGROUPMEMBER 'DomainGroup' | SELECT-OBJECT Name, DistinguishedName, SamAccountName

# Найти по вхождение фразы определённых пользователей и показать их данные
Get-ADUser -Filter {name -like "*Petr*"} | FT Name,DisplayName, SamAccountName, ADGroup, EmailAddress, UserPrincipalName, Department, Description -A

Как просмотреть все доменные группы пользователя используя PowerShell


# Список доменных учётных записей, для которых необходимо показать все их доменные группы
$usrs=@('Ivanov','Petrov')   

    foreach ($usr in $usrs)
    {
        write-host ' '
        write-host '--[' -nonewline
        write-host $usr  -nonewline -foregroundcolor Red
        write-host ']-------- '          
       #get-aduser $usr | FT Name, SamAccountName,UserPrincipalName,SID,ObjectGUID
        write-host 'Доменные группы: ' 
        $query = "ASSOCIATORS OF {Win32_Account.Name='"+$usr+"',Domain='DomainName'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"
        Get-WMIObject -Query $query | Select Name
        write-host '-------------------- '             
    }

среда, 5 сентября 2012 г.

TFS Administrators Toolkit

Полезный инструмент для администраторов TFS - TFS Administrators Toolkit (Ссылка).


вторник, 28 августа 2012 г.