Wednesday, June 23, 2010

Office 2010 installation sucks... The Language of this installtion package is not supported by your system

The Language of this installtion package is not supported by your system

The reason I was getting this error was due to the method I had used in extracting the data from the file en_office_professional_plus_2010_x86_515486.exe

I had used Winzip, by right clicking the file and selecting Extract to D:\Office

The correct way for extacting the data was to extract using the command line. The syntax being

D:\en_office_professional_plus_2010_x86_515486.exe /extract:D:\Office

The switch /extract:D:\Office extracts the files contents to D:\Office on my PC, but could be any location.

Thursday, June 17, 2010

Krish Krishnan's Be eye Blog

http://www.b-eye-network.com/blogs/krishnan/

Tuesday, June 15, 2010

datetime in integer

Select @dt = GETDATE()
Select CONVERT(varchar(26),@dt, 121)
, CONVERT(bigint, replace(replace(replace(replace(convert(varchar(23),@dt,121),'-',''),':',''),'.',''),' ',''))
, CONVERT(int, @dt) -- date offset starting 1899-12-31
, DATEADD( D, -(CONVERT(int, @dt) ), @dt)

Tuesday, June 8, 2010

file system. sql server

--==============================================================
--Script Author: Timothy Ford aka SQLAgentMan
-- http://thesqlagentman.com
-- Can be used for personal use; credit must be given to author
-- Code can not be used for commercial use, repackaged, resold without permission
--==============================================================

--==============================================================
--CREATE DATABASE iDBA IF IT DOES NOT ALREADY EXIST:
--==============================================================
/*
IF NOT EXISTS (SELECT name FROM master..sysdatabases WHERE name = 'iDBA')
BEGIN
CREATE DATABASE iDBA;
ALTER DATABASE [iDBA] SET AUTO_SHRINK OFF;
ALTER DATABASE [iDBA] SET RECOVERY SIMPLE WITH NO_WAIT;
ALTER DATABASE [iDBA] MODIFY FILE (NAME = N'iDBA', MAXSIZE = 1000MB , FILEGROWTH = 100MB);
ALTER DATABASE [iDBA] MODIFY FILE (NAME = N'iDBA_log', MAXSIZE = 200MB , FILEGROWTH = 100MB);
END

*/


--====================================================================
--CREATE THE STORED PROCEDURE AS USED FOR LOADING DBA REPOSITORY NIGHTLY
--====================================================================
USE [iDBA];

CREATE PROCEDURE [dbo].[usp_database_file_snapshot] AS
DECLARE @SQL VARCHAR(5000)
DECLARE @version smallint


--DETERMINE IF THE INSTANCE IS SQL 2005 OR LATER SO CATALOG VIEWS CAN BE USED
SELECT @version = CONVERT(smallint, LEFT(CONVERT(varchar(20),SERVERPROPERTY('ProductVersion')),CHARINDEX('.',CONVERT(varchar(20),SERVERPROPERTY('ProductVersion')))-1))

IF EXISTS (SELECT NAME FROM tempdb..sysobjects WHERE NAME = 'RESULTS_FILE_HISTORY')
BEGIN
DROP TABLE [tempdb].[dbo].[RESULTS_FILE_HISTORY]
END

CREATE TABLE [tempdb].[dbo].[RESULTS_FILE_HISTORY] ([Server] nvarchar(128), [DatabaseName] sysname, [Name] sysname, [Filename] NVARCHAR(260),
[FileType] varchar(4), [Size_In_Mb] int, [Available_Space_In_Mb] int, [Growth_Increments] int, [Growth_Units] varchar(2),
[Max_File_Size_In_Mb] int)

--IF THIS IS A SQL 2000 OR EARLIER INSTANCE YOU MUST USE THE SYSTEM TABLES
IF @version < 9
BEGIN
SELECT @SQL =
'USE [?] INSERT INTO [tempdb].[dbo].[RESULTS_FILE_HISTORY]([Server], [DatabaseName], [Name], [Filename],
[FileType], [Size_In_Mb], [Available_Space_In_Mb], [Growth_Increments],
[Growth_Units], [Max_File_Size_In_Mb])
SELECT @@servername, DB_NAME(),
[name] AS [Name],
[filename] AS [Filename],

[FileType] =
CASE (status & 0x40)
WHEN 0 THEN ''Data'''
+
'ELSE ''Log'''
+
'END,

[Size_In_Mb] =
CASE ceiling([size]/128)
WHEN 0 THEN 1
ELSE ceiling([size]/128)
END,
[Available_Space_In_Mb] =
CASE ceiling([size]/128)
WHEN 0 THEN (1 - CAST(FILEPROPERTY([name], ''SpaceUsed''' + ') as int) /128)
ELSE (([size]/128) - CAST(FILEPROPERTY([name], ''SpaceUsed''' + ') as int) /128)
END,

[Growth_Increments] =
CASE (status & 0x100000)
WHEN 0 THEN CAST(CEILING([growth]/1024*8) AS int)'
+
'ELSE [growth]'
+
'END,

[Growth_Units] =
CASE (status & 0x100000)
WHEN 0 THEN ''Mb'''
+
'ELSE ''%'''
+
'END,
[Max_File_Size_In_Mb] =
CASE [maxsize]
WHEN -1 THEN NULL
WHEN 268435456 THEN NULL
ELSE [maxsize]/1024*8
END
FROM dbo.sysfiles
ORDER BY [fileid]'
END
ELSE --IF THIS IS A SQL 2005 OR LATER INSTANCE YOU WILL USE THE CATALOG VIEWS
BEGIN
SELECT @SQL =
'USE [?] INSERT INTO [tempdb].[dbo].[RESULTS_FILE_HISTORY]([Server], [DatabaseName], [Name], [Filename],
[FileType], [Size_In_Mb], [Available_Space_In_Mb], [Growth_Increments],
[Growth_Units], [Max_File_Size_In_Mb])
SELECT @@servername, DB_NAME(),
[name] AS [Name],
physical_name AS [Filename],
[FileType] =
CASE type
WHEN 0 THEN ''Data'''
+
'WHEN 1 THEN ''Log'''
+
'END,
[Size_In_Mb] =
CASE ceiling([size]/128)
WHEN 0 THEN 1
ELSE ceiling([size]/128)
END,
[Available_Space_In_Mb] =
CASE ceiling([size]/128)
WHEN 0 THEN (1 - CAST(FILEPROPERTY([name], ''SpaceUsed''' + ') as int) /128)
ELSE (([size]/128) - CAST(FILEPROPERTY([name], ''SpaceUsed''' + ') as int) /128)
END,

[Growth_Increments] =
CASE [is_percent_growth]
WHEN 0 THEN [growth]'
+
'ELSE CAST(CEILING([growth]/1024*8) AS int)'
+
'END,
[Growth_Units] =
CASE [is_percent_growth]
WHEN 1 THEN''%'''
+
'ELSE ''Mb'''
+
'END,
[Max_File_Size_In_Mb] =
CASE [max_size]
WHEN -1 THEN NULL
WHEN 268435456 THEN NULL
ELSE [max_size]/1024*8
END
FROM sys.database_files
ORDER BY [FileType], [file_id]'
END

--Run the command against each database
EXEC sp_MSforeachdb @SQL

--You can uncomment the following statement in order to see the results returned in SSMS:
/*
SELECT [Server], [DatabaseName], [Name], [Filename],
[FileType], [Size_In_Mb], [Available_Space_In_Mb],
CEILING(CAST([Available_Space_In_Mb] AS decimal(10,1)) / [Size_In_Mb]*100) AS [Free Space %],
[Growth_Increments], [Growth_Units], [Max_File_Size_In_Mb]
FROM [tempdb].[dbo].[RESULTS_FILE_HISTORY];
*/

GO
-------------------------------------------------------------------------------

--==============================================================
--CODE TO PERSIST THE DATA (Daily In This Case)
--==============================================================
--==============================================================
--Script Author: Timothy Ford aka SQLAgentMan
-- http://thesqlagentman.com
-- Can be used for personal use; credit must be given to author
-- Code can not be used for commercial use, repackaged, resold without permission
--==============================================================

/*
AUTHORS NOTE:
This runs via an SSIS process I've instituted to collect metadata from all instances I monitor.
If you're interested in doing so I suggest reading Rodney Landrum's DBA Toolbox book
from Red Gate Press.

The code here only runs locally against non-persisted data - just the temp table

Use Ctl+Shift+M to replace the template parameter for threshold with a value of your choosing. Default is 85%
*/

EXEC iDBA.dbo.usp_database_file_snapshot;

--==============================================================
-- Relies upon previously creating the iDBA.dbo.usp_database_file_snapshot stored procedure
--==============================================================
SELECT [Server], [DatabaseName], [Name], [Filename],
[FileType], [Size_In_Mb] AS [File Size (Mb)], [Available_Space_In_Mb] AS [Free Space (Mb)],
[Max_File_Size_In_Mb] AS [Max File Size (Mb)], ([Size_In_Mb] - [Available_Space_In_Mb]) AS [Space Used (Mb)],
CAST([Growth_Increments] AS varchar(10)) + ' ' + [Growth_Units] AS [Growth Increment],
CAST((([Size_In_Mb] - [Available_Space_In_Mb])*1.0) / [Size_In_Mb] AS decimal(5,2)) AS [% Consumed],
[date_stamp]
FROM [tempdb].[dbo].[RESULTS_FILE_HISTORY]
WHERE (([Size_In_Mb] - [Available_Space_In_Mb])*1.0) / [Size_In_Mb] >= 0.85
ORDER BY [Server], [DatabaseName];

Thursday, June 3, 2010

Reporting Services - reading .rdl files

http://www.mssqltips.com/tip.asp?tip=1839

Wednesday, June 2, 2010

Sins of Time , but its better to have time and date in two separate dimensions

Hats off to Steve

/** * Function: fn_GetTimestampRange
* Author: Steve Gray / steve.gray@cobaltsoftware.net
* Version: 1.0.0.0
* Date: 30 April 2010
*
* Parameters:
* @FromDate - Start of time-range
* @ToDate - End of time-range
* @IncludeSeconds - 0 = Minute level, 1 = Second level
**/
CREATE FUNCTION fn_GetTimestampRange(@FromDate DATETIME, @ToDate DATETIME, @IncludeSeconds BIT)
RETURNS TABLE
AS
RETURN (
/* Loop through the days in the range */
WITH DayCTE([Date])
AS
(
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(255), @FromDate, 20))
UNION ALL
SELECT DATEADD(DAY, 1, [Date]) FROM DayCTE WHERE Date < @ToDate
), /* Obtain a set of numbers 0..59 */
NumberCTE([Number])
AS
(
SELECT 0
UNION ALL
SELECT Number + 1 FROM NumberCTE WHERE Number < 59
)
SELECT
Result.DateKey,
DATEPART(YEAR, Result.DateKey) AS [Year],
DATEPART(QUARTER, Result.DateKey) AS [Quarter],
DATEPART(WEEK, Result.DateKey) AS [Week],
DATEPART(WEEKDAY, Result.DateKey) AS [WeekDayNumber],
DATENAME(WEEKDAY, Result.DateKey) AS [WeekDayName],
DATEPART(DAYOFYEAR, Result.DateKey) AS [DayOfYear],
DATEPART(MONTH, Result.DateKey) AS [Month],
DATEPART(DAY, Result.DateKey) AS [Day],
DATEPART(HOUR, Result.DateKey) AS [Hour],
DATEPART(MINUTE, Result.DateKey) AS [Minute],
DATEPART(SECOND, Result.DateKey) AS [Second]
FROM
(
SELECT
DATEADD(SECOND, COALESCE(SecondCTE.Number, 0),
DATEADD(MINUTE, MinuteCTE.Number,
DATEADD(HOUR, HourCTE.Number, DayCTE.Date))) AS DateKey
FROM
DayCTE
LEFT JOIN NumberCTE HourCTE ON HourCTE.Number
BETWEEN 0 AND 23
AND DayCTE.Date IS NOT NULL
LEFT JOIN NumberCTE MinuteCTE ON MinuteCTE.Number
BETWEEN 0 AND 59
AND HourCTE.Number IS NOT NULL
LEFT JOIN NumberCTE SecondCTE ON SecondCTE.Number
BETWEEN 0 AND 59
AND @IncludeSeconds = 1
AND MinuteCTE.Number IS NOT NULL
WHERE
DATEADD(SECOND, COALESCE(SecondCTE.Number, 0),
DATEADD(MINUTE, MinuteCTE.Number,
DATEADD(HOUR, HourCTE.Number, DayCTE.Date)))
BETWEEN @FromDate AND @ToDate
) RESULT
);