2016-12-14

Für "schöne" Reports: Umrechnung Pixel<->Inch<->cm

In Reporting Services (SSRS) rendert die Berichte in 96dpi (Dots per Inch). Um keinen Flatterrand oder ähnliches zu bekommen, müssen alle Größen und Positionsangaben alligned werden. Die Angaben müssen im Verhältnis von 96dpi in ganze Pixel umgerechnet werden können und die umgerechneten Pixel dürfen bei einer Division mit 3 keinen Rest ergeben.
Als eine kleine Hilfestellung anbei eine Excel-Datei für die Umrechnung von Pixel, Inch und CM.
SSRS Pixel-Inch-CM Umrechnen.xlsx

SQL-Logins zwischen zwei Servern kopieren

Folgender KB-Artikel beschreibt wie Logins von einem SQL-Server auf einen neuen SQL-Server samt Password und SID kopiert
 
http://support.microsoft.com/kb/918992

DB-Projekte in Visual Studio - DB-Objekte hinzufügen

Nur DB-Ob​jekte die in der Schemaansicht angezeigt werden, gehören zum Umfang der Datenbank und werden auch bei einem Deployment vorgesehen. Unabhängig davon ob ein vermeitliches DB-Objekt zwar als Datei im Projektmappen-Explorer angezeigt wird muss es deshalb nicht in der Schemaansicht sichtbar sein.
 
Wie kann das passieren? Es passiert häufig dann, wenn dem Projekt Objekte über den Projektmappen-Explorer als "vorhandenes Element" hinzugefügt werden. Die ausgewählte Datei ist dann im Projektmappen-Explorer sichtbar aber evtl. nicht in der Schemaansicht.
Wie behebt man den Fehler?
  1. Die entsprechende Datei aus dem Projekt in einen anderen Ordner kopieren, zum Beispiel C:\Temp zur Aufbewahrung
  2. Das DB-Projekt öffnen und die Datei im Projektmappen-Explorer finden und aus dem Projekt ausschließen und diese Änderung einchecken
  3. Die Datei im Quellcodeverwaltungs-Explorer finden und löschen
  4. Das Löschen der Datei einchecken
  5. Jetzt in der Schemaansicht das Objekt wieder hinzufügen.
  6. Zur Überprüfung einen fehlerfreien Build durchführen
Zum Schluss die Änderungen einchecken

Bufferpool leeren

DBCC DROPCLEANBUFFERS Verwenden Sie DBCC DROPCLEANBUFFERS, um Abfragen mit einem frischen Puffercache zu testen, ohne den Server herunterzufahren und neu zu starten.​

Plancache löschen

Löschen eines Abfrageplans im Plancache

USE AdventureWorks2008R2;

GO
 
 
SELECT * FROM Person.Address;

GO
 
 
SELECT plan_handle, st.text

FROM sys.dm_exec_cached_plans

CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st

WHERE text LIKE N'SELECT * FROM Person.Address%';

GO
  
Dies ist das Resultset.
plan_handle                                         text
--------------------------------------------------  -----------------------------
0x060006001ECA270EC0215D05000000000000000000000000 SELECT * FROM Person.Address;
(1 Zeile(n) betroffen)
 
 

-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);

GO

 
Löschen aller Pläne im Plancache
SELECT * FROM sys.dm_resource_governor_resource_pools;

GO
 
 
 
DBCC FREEPROCCACHE ('default');
GO

TOP 25 teuersten Abfragen

SELECT TOP (25)

qs.sql_handle,

qs.execution_count,

qs.total_worker_time AS Total_CPU,

total_CPU_inSeconds = --Converted from microseconds

qs.total_worker_time/1000000.00,

average_CPU_inSeconds = --Converted from microseconds

(qs.total_worker_time/1000000.00) / qs.execution_count,

qs.total_elapsed_time,

total_elapsed_time_inSeconds = --Converted from microseconds

qs.total_elapsed_time/1000000.00,

st.text,

qp.query_plan

FROM sys.dm_exec_query_stats AS qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st

CROSS apply sys.dm_exec_query_plan (qs.plan_handle) AS qp

ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);

TOP 25 teuersten Prozeduren

SELECT TOP (25)
p.name AS [SP Name],
qs.total_worker_time AS [TotalWorkerTime],
qs.total_worker_time/qs.execution_count AS [AvgWorkerTime],
qs.execution_count,
ISNULL(qs.execution_count/DATEDIFF(Second, qs.cached_time, GETDATE()), 0)
AS [Calls/Second],
qs.total_elapsed_time,
qs.total_elapsed_time/qs.execution_count AS [avg_elapsed_time],
qs.cached_time
FROM sys.procedures AS p WITH (NOLOCK)
INNER JOIN sys.dm_exec_procedure_stats AS qs WITH (NOLOCK)
ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);

CMD - Howto delete files older than N days

Windows XP:
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"

Ab Windows 7:
forfiles -p "C:\what\ever" -s -m *.* /D -<number of days> /C "cmd /c del @path"

SET Einstellung von Stored Procedures abfragen (ANSI_NULLS & QUOTED_IDENTIFIER)

Wenn man sich mit dem SSMS nicht den Code für jede Prozedur generieren lassen will können diese Eigenschaften auch wie folgt abgefragt werden.
 
SELECT name = OBJECT_NAME(m.[object_id]), m.uses_ansi_nulls, m.uses_quoted_identifier
FROM sys.sql_modules m
order by OBJECT_NAME(m.[object_id])

Datafile Spaceusage

Liefert die Datafile Auslastung aller Datenbanken einer SQL-Server Instanz
 
DECLARE @PGSize_Byte int
DECLARE @DBName nvarchar(100)
DECLARE @SQLString nvarchar(4000);
DECLARE @Tab_DBSpaces TABLE (
      Instanz varchar(256),
      DBName varchar(256),
      name varchar(256),
      type_desc varchar(256),
      filename varchar(256),
      FileSizeMB varchar(50),
      SpaceUsedMB varchar(50),
      FreeSpaceMB varchar(50),
      NextMB varchar(50),
      is_percent_growth tinyint,
      MaxSizeMB varchar(50)
)
 
SELECT @PGSize_Byte = low FROM master..spt_values WHERE number = 1 AND type = 'E'
 
DECLARE Cur_DB Cursor fast_forward for
Select name from sys.databases where state = 0 order by name
 
OPEN Cur_DB
Fetch NEXT FROM Cur_DB into @DBName
 
WHILE @@FETCH_STATUS = 0
BEGIN
      set @SQLString = N'USE [' + @DBName + ']
      select
      @@SERVERNAME
      ,''' + @DBName +''' as DBName
    , a.name
      , b.type_desc
      , filename
      , replace(convert(decimal(12,2),round(a.size/128.000,2)),''.'','','') as FileSizeMB
      , replace(convert(decimal(12,2),round(fileproperty(a.name,''SpaceUsed'')/128.000,2)),''.'','','') as SpaceUsedMB
      , replace(convert(decimal(12,2),round((a.size-fileproperty(a.name,''SpaceUsed''))/128.000,2)),''.'','','') as FreeSpaceMB
      , replace(convert(decimal(12,2),CASE WHEN b.is_percent_growth = 0 THEN round(b.growth/128.000,2) ELSE (round(a.size/128.000,2)) * b.growth / 100.00 END),''.'','','') as NextMB
      , b.is_percent_growth
      , replace(convert(decimal(12,2),round(a.maxsize/128.000,2)),''.'','','') as MaxSizeMB
      from dbo.sysfiles a
      inner join sys.database_files b
            on a.fileid = b.file_id'
     
      INSERT INTO @Tab_DBSpaces
      execute sp_executesql @SQLString
     
      Fetch NEXT FROM Cur_DB into @DBName
END
 
CLOSE Cur_DB
DEALLOCATE Cur_DB
 
 
Select * from @Tab_DBSpaces
 
 
Ergebnis:
 
InstanzDBNamenametype_descfilename FileSizeMB  SpaceUsedMB  FreeSpaceMB  NextMB is_percent_growth MaxSizeMB 
LOCALHOSTDM_MainDM_MainROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\DM_Main.mdf          10,25                   8,69                  1,56            1,00  
0
-               0,01  
LOCALHOSTDM_MainDM_Main_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\DM_Main_log.ldf          14,69                   1,94                 12,75            1,47  
1
   2.097.152,00  
LOCALHOSTDWHData01ROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\DWH_Data01.mdf          15,00                   8,75                  6,25            1,00  
0
-               0,01  
LOCALHOSTDWHLog01_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\DWH_Log01.ldf          14,69                   1,77                 12,91            1,47  
1
   2.097.152,00  
LOCALHOSTmastermasterROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\master.mdf           4,00                   2,94                  1,06            0,40  
1
-               0,01  
LOCALHOSTmastermastlogLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\mastlog.ldf           1,25                   0,55                  0,70            0,13  
1
-               0,01  
LOCALHOSTmodelmodeldevROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\model.mdf           2,25                   1,44                  0,81            1,00  
0
-               0,01  
LOCALHOSTmodelmodellogLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\modellog.ldf           0,75                   0,28                  0,47            0,08  
1
-               0,01  
LOCALHOSTmsdbMSDBDataROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\MSDBData.mdf          28,94                  27,31                  1,63            2,89  
1
-               0,01  
LOCALHOSTmsdbMSDBLogLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\MSDBLog.ldf           5,56                   1,57                  3,99            0,56  
1
   2.097.152,00  
LOCALHOSTReportServerReportServerROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\ReportServer.mdf           3,25                   3,25                      -              1,00  
0
-               0,01  
LOCALHOSTReportServerReportServer_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\ReportServer_log.LDF           0,81                   0,34                  0,47            0,08  
1
   2.097.152,00  
LOCALHOSTReportServerTempDBReportServerTempDBROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\ReportServerTempDB.mdf           2,25                   1,50                  0,75            1,00  
0
-               0,01  
LOCALHOSTReportServerTempDBReportServerTempDB_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\ReportServerTempDB_log.LDF           0,81                   0,49                  0,32            0,08  
1
   2.097.152,00  
LOCALHOSTStageStageROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\Stage.mdf     9.837,25                286,81            9.550,44            1,00  
0
-               0,01  
LOCALHOSTStageStage_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\Stage_log.ldf        894,88                  14,34               880,54          89,49  
1
   2.097.152,00  
LOCALHOSTtempdbtempdevROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\tempdb.mdf           8,00                   2,88                  5,13            0,80  
1
-               0,01  
LOCALHOSTtempdbtemplogLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\templog.ldf           0,75                   0,55                  0,20            0,08  
1
-               0,01  
LOCALHOSTTestTestROWSC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\Test.mdf        170,00                169,13                  0,88            1,00  
0
-               0,01  
LOCALHOSTTestTest_logLOGC:\Program Files\Microsoft SQL Server\MSSQL10_50.DEV\MSSQL\DATA\Test_log.ldf           2,75                   0,59                  2,16            0,28  
1
   2.097.152,00