Sorry, German only...

Die ideale Gelegenheit, sich mit den neuesten Microsoft-Technologien vertraut zu machen, bieten die Launch-Konferenz 2008 und die Deutsche SharePoint Konferenz. Beide Konferenzen finden vom 19. bis 21. Februar 2008 gleichzeitig in Frankfurt am Main statt und bieten Ihnen die Möglichkeit, den produktiven Einsatz innovativer Techniken kennen zu lernen. Ein Highlight nicht nur für die Branche, sondern auch für Sie.
Verpassen Sie nicht den Launch der neuesten Microsoft-Technologien:
- Windows Server® 2008,
- SQL Server™ 2008 und
- Visual Studio® 2008
und erfahren Sie, wie Sie diese Technologien konkret nutzen können, um die IT-Umgebung in Ihrem Unternehmen sicherer und effizienter zu gestalten. Es erwarten Sie über 80 hochkarätige Programmpunkte, Gespräche mit kompetenten Experten und die Vorstellung von Praxislösungen durch unsere Partner. Bringen Sie Ihr Knowhow über innovative und effiziente Technologien auf den neuesten Stand.
Gleichzeitig findet die Deutsche SharePoint Konferenz 2008 statt. Sie knüpft an die Erfolge der Vorjahre an und legt nun starken Fokus auf die praktische Nutzung von SharePoint. Experten, Kunden und Partner zeigen Ihnen in mehr als 60 Fachvorträgen, wie SharePoint erfolgreich eingesetzt wird − in unterschiedlichen Branchen, Fachbereichen und technologischen Umgebungen.
Ready for Take-off? Nehmen Sie an der wichtigsten Microsoft-Großveranstaltung teil! Melden Sie sich am besten gleich hier für die Launch-Konferenz 2008 und die Deutsche SharePoint Konferenz 2008 an.

Why should your Company Exhibit at PASS Conference 2008? - Link to hundreds of highly qualified prospects that will help you expand your customer base
- Engage with SQL Server and Business Intelligence experts to promote your products and services
- Increase exposure and awareness for your company
- Achieve sales growth and generate valuable sales leads
- Cultivate existing relationships
For more information on how your company can benefit from participation as an exhibitor and/or sponsor, please contact exhibitors08@european-pass-conference.com. Sponsoring & Exhibition Prospectus
The 2008 European PASS Conference Call for Speakers is now open!
PASS would like to encourage you to submit an abstract today!
Link to abstract submission form : http://survey.constantcontact.com/survey/a07e27lqm18fa6vm3ti/start
PASS is an association for users, run by users. It is important that our members be involved and help build the community they are a part of.
As a speaker at the 2008 European PASS Conference Summit (http://www.european-pass-conference.com) in Neuss - Germany (Near Dusseldorf), April 15 and 16, 2008 , you will receive:
- Complimentary registration to the 2008 European PASS Conference
- Industry recognition
- Networking opportunities with hundreds of attendees
Microsoft employees are encouraged to submit presentations using the online submission form, however, please note that these submissions will be reviewed and abstract status will be determined by Microsoft.
The deadline to submit a presentation is January 31, 2008. If you have any questions, please e-mail speakerbureau08@european-pass-conference.com.
Thank you and we look forward to your participation!
I have used the holidays to install a new version of Windows Live Writer since the official version - no beta - is available as download since the beginning of November and is named Windows Live Writer 2008.
After installing I searched for useful resources which would make blogging easier and I came across three websites containing useful tips and Plug-ins.
Currently I have added the following Plug-ins:
I wish all a Happy New Year and best wishes for 2008! (presumed that you use the Gregorian calendar, like Wikipedia knows to tell... ) And yes... one of my New Year's pledge is to blog more than the last year - I hope to satisfy this...
Rodney Landrum demonstrates an ingenious way to monitor blocked SQL Server processes across all your servers, using nothing but SSRS in his posting "The Reporting Services 3-Trick Pony"
Sam Battermann has posted about a really fascinating video using a webcam and a WPF application to create some tremendous effects:
I recently had to download some flatfiles from different FTP Resources to load these into a SQL database. Being a fan of package configurations and minimized maintenance I decided to build a package which would loop through a recordset containing the necessary informations like FTP server, port, user and password instead of creating different packages or steps for each FTP server. excursion: I know that storing passwords in a database table is not really best practice for security, but the guys being responsible for the SQL Server are also responsible for the FTP server...  So, extracting the informations with a SQL Task, including a loop and using expressions to set the correct properties would not be a great challenge I thought. Up to the moment I tried to select the property for the password from the Property Expressions Editor in BIDS: There is no property which could be used to set the password via expression - this must be a security feature to enable FTP tasks to be "secure by default"... So what do to do? Searching the properties for the password prop I recognized that there is a property for the connection - though I should use this for the loop approach instead of building several tasks? But what would be the correct usage of the connection? Once again like every day in the life of an IT guy I used the "tool which must not be named" [@Microsoft: why don't you find search results even in your own resources???] and et voilà I got the perfect hint in the SSIS forum of MSDN. The correct syntax for the connection would be Server IP:Port.loginAccount.loginPWD, therefor you could use an expression like this: @[user::FtpServer] + ":" + @[user::FtpServerPort] +"."+ @[user::FtpAcct] +"."+ @[user::FtpPwd] to build this connection string. And if you use another variable to build the string - do not forget to set the "evaluate as expression" to TRUE...
A long time ago - February and March 2006 - Eugene Asahara has posted two very intersting articles about The "KPI Cause and Effect Visio Graph" is a very useful visualization tool to diskuss KPI´s with the prospective users whereas the "KPIRelationships sample application" is a very smart tool to control if all perspectives, KPI´s, etc are developed and have the right definitions. This two articles are a really must-read and Eugene also provides the tools for download - so check it out!
If you would like to split values from a column which are divideable beacause they are using the same delimiter like an ',' for example you could use the function below. The function also brings up the postion, which sometimes could be very usefull, too. To call the function just use, select * from dbo.fn_split('Value 1,Value 2',',')
the first parameter is the column to split, the second contains the delimiter. You can not use different delimiters at one time at the moment, if you want to suggest some enhancements, please use the comments....  The statement will bring up the following result set:
CREATE FUNCTION [dbo].[fn_Split](@text nvarchar(max), @delimiter char(1) = ' ')
RETURNS @Strings TABLE
(
position int IDENTITY PRIMARY KEY,
value nvarchar(max)
)
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
BEGIN
SET @index = CHARINDEX(@delimiter , @text)
IF (@index = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text)
BREAK
END
IF (@index > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
RETURN
END
Are you also always looking in the BOL if you have to deal with datetime? This stored procedure could bring some light in the dark... You will have to call it with the following statement: Select dbo.fn_formatdate(getdate(),'formated date: \TT\MM\YYYY \hh:\mi:\ss \ms Week: \wk Weekday: \DW Quarter: \qq'),getdate()
The formatstring can contain severall formatstrings and will bring up all datetimeparts you want, including some additional textparts...
CREATE FUNCTION [dbo].[fn_formatdate](@dat datetime,@format varchar(255))
RETURNS varchar(255)
AS
BEGIN
declare @ret varchar(255)
declare @i int
-- year 4 digits
set @ret=replace(@format,'\jjjj',cast(year(@dat) as varchar(4)))
-- year 4 digits
set @ret=replace(@ret,'\yyyy',cast(year(@dat) as varchar(4)))
-- day 2 digits
set @ret=replace(@ret,'\dd',right('0'+cast(day(@dat) as varchar(2)),2))
-- weekday 1 digit
set @ret=replace(@ret,'\dw',cast(datepart(dw,@dat) as varchar(1)))
-- day of year
set @ret=replace(@ret,'\dy',right('00'+cast(day(@dat) as varchar(3)),3))
-- hour 2 digits
set @ret=replace(@ret,'\hh',right('0'+cast(datepart(hh,@dat) as varchar(2)),2))
-- year 2 digits
set @ret=replace(@ret,'\jj',right(cast(year(@dat) as varchar(4)),2))
-- minute 2 digits
set @ret=replace(@ret,'\mi',right('0'+cast(datepart(mi,@dat) as varchar(2)),2))
-- month 2 digits
set @ret=replace(@ret,'\mm',right('0'+cast(month(@dat) as varchar(2)),2))
-- milliseconds 3 digits
set @ret=replace(@ret,'\ms',right('00'+cast(datepart(ss,@dat) as varchar(3)),3))
-- quarter 2 digits
set @ret=replace(@ret,'\qq',right('0'+cast(datepart(qq,@dat) as varchar(2)),2))
-- seconds 2 digits
set @ret=replace(@ret,'\ss',right('0'+cast(datepart(ss,@dat) as varchar(2)),2))
-- day 2 digits
set @ret=replace(@ret,'\tt',right('0'+cast(day(@dat) as varchar(2)),2))
-- week 2 digits
set @ret=replace(@ret,'\wk',right('0'+cast(datepart(wk,@dat) as varchar(2)),2))
-- year 2 digits
set @ret=replace(@ret,'\yy',right(cast(year(@dat) as varchar(4)),2))
-- day 1-2 digits
set @ret=replace(@ret,'\d',cast(day(@dat) as varchar(2)))
-- hour 1-2 digits
set @ret=replace(@ret,'\h',cast(datepart(hh,@dat) as varchar(2)))
-- month 1-2 digits
set @ret=replace(@ret,'\m',cast(month(@dat) as varchar(2)))
-- minute 2 digits
set @ret=replace(@ret,'\n',right('0'+cast(datepart(mi,@dat) as varchar(2)),2))
-- quarter 1 digit
set @ret=replace(@ret,'\q',cast(datepart(qq,@dat) as varchar(1)))
-- seconds 1-2 digits
set @ret=replace(@ret,'\s',cast(datepart(ss,@dat) as varchar(2)))
-- day 1-2 digits
set @ret=replace(@ret,'\t',cast(day(@dat) as varchar(2)))
-- week 1-2 digits
set @ret=replace(@ret,'\w',cast(datepart(wk,@dat) as varchar(2)))
return @ret
END
GO
Do you want to create database snapshots? And do you want to do it programmatically? Then you could use this stored procedure... Enjoy! CREATE PROC [dbo].[spr_CreateSnapshot]
(@Masterdb VARCHAR(255), @SnapshotName VARCHAR(255), @Execute BIT = 1)
AS
SET NOCOUNT ON
DECLARE @NewLine CHAR(2)
DECLARE @Q CHAR(1)
DECLARE @fname VARCHAR(255)
DECLARE @extention VARCHAR(255)
DECLARE @Pfad VARCHAR(255)
DECLARE @DBname VARCHAR(255)
DECLARE @LogicName VARCHAR(255)
DECLARE @Command VARCHAR(MAX)
DECLARE @indexExt INT
DECLARE @indexPfad INT
DECLARE @lenFname INT
DECLARE @lenPfad INT
DECLARE @lenDB INT
DECLARE @lenExt INT
CREATE TABLE #Info
(physical_name VARCHAR(255) not null,
logicname VARCHAR(255) not null)
SET @newLine = CHAR(13) + CHAR(10)
SET @Q = CHAR(39)
SET @command = 'INSERT INTO #info (physical_name, logicname)
SELECT s.physical_name,s.[name] AS LogicName
FROM '
+ Quotename(@masterdb) + '.sys.filegroups as g
INNER JOIN
sys.master_files AS s ON
s.type = 0
AND s.database_id = db_id(' + @Q + @Masterdb + @Q + ')
AND s.drop_lsn is null
AND s.data_space_id = g.data_space_id
ORDER BY
g.data_space_id'
EXECUTE (@Command)
SET @Command = 'CREATE DATABASE ' + @SnapshotName + @NewLine
SET @Command = @Command + 'ON' + @NewLine
DECLARE c CURSOR
READ_ONLY
FOR SELECT physical_name, logicname FROM #info
OPEN c
FETCH NEXT FROM c INTO @fname,@LogicName
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
SET @fname = REVERSE(@fname)
SET @lenFname = LEN(@fname)
SET @indexExt = CHARINDEX('.',@fname) -1
SET @indexPfad = CHARINDEX('\',@fname) - 1
SET @extention = REVERSE(SUBSTRING (@fname, 1, @indexExt))
SET @lenExt = LEN(@extention)
SET @Pfad = LEFT (REVERSE(@fname), @lenFname - @indexPfad)
SET @lenPfad = LEN(@Pfad)
SET @DBname = SUBSTRING(REVERSE(@fname), @lenPfad + 1, (@lenFname - @lenPfad - @lenExt) - 1)
SET @Command = @Command + '(Name = ' + @Q + @LogicName + @Q + ', Filename = ' + @Q
SET @Command = @Command + @Pfad + @SnapshotName + '_' + @DBname + '.' + 'ssh' + @Q + '),' + @NewLine
END
FETCH NEXT FROM c INTO @fname,@LogicName
END
CLOSE c
DEALLOCATE c
SET @Command = LEFT(@Command,LEN(@Command)-3) + @NewLine + 'AS SNAPSHOT OF ' + @masterdb
IF @Execute = 1
BEGIN
EXEC (@Command)
END
ELSE
BEGIN
SELECT @Command AS Command
END
You are interested in getting some informations about your SQL Server, for example to be able to do an auditing on your SQL Server via SSIS, this code will help: SELECT
SERVERPROPERTY ('MachineName') as MachineName,
SERVERPROPERTY ('InstanceName') as InstanceName,
SERVERPROPERTY ('ProductVersion') as ProductVersion,
SERVERPROPERTY ('ProductLevel') As ProductLevel,
SERVERPROPERTY ('Edition') as Edition,
SERVERPROPERTY ('LicenseType') as LicenseType,
SERVERPROPERTY ('NumLicenses') as NumLicenses,
SERVERPROPERTY ('IsClustered') as IsClustered,
SERVERPROPERTY ('IsIntegratedSecurityOnly') as IsIntegratedSecurityOnly
I do not know the original author of this stored procedure... If you are the one - please send me an email and I will publish the right credits! After changing the structure of a table or delete one you will need to check and refresh your views also. This code will help... DECLARE @Table_Name varchar(100)
DECLARE Refresh_Views CURSOR FOR
SELECT Table_Name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'VIEW' AND TABLE_SCHEMA = 'dbo'
OPEN Refresh_Views
FETCH NEXT FROM Refresh_Views INTO @Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_refreshview @Table_Name
FETCH NEXT FROM Refresh_Views INTO @Table_Name
END
CLOSE Refresh_Views
DEALLOCATE Refresh_Views
This one is an event for your 2008 calender... PASS is coming back to Europe next year from April 14th to 16th with the European PASS Conference 2008!
You want to be part of it?
- The Swissôtel is placed directly near the Rhine and is approx. 10 min away from the "Düsseldorf Altstadt" if you drive by car.
Scott Hanselman has posted about the "DasBlog Theme Contest" started to get some more themes for the start of the 2.0 release of DasBlog. The contest is hosted by Ben Scheirman, who also provides a step-by-step description on how to create an own theme. If you have ever thought of feeling as a designer and create a new theme for DasBlog? There will be no better time than now! 
Microsoft provides some useful nice stuff for download: "Keyboard shortcuts can help increase productivity when performing certain tasks within the Visual Studio 2005 IDE (Integrated Development Environment). This wall poster provides the shortcut and associated description for the default key bindings setup in the Visual Basic 2005 profile. The poster is provided here in both color and grayscale for you to print locally as a PDF file." Download, print, place it near your keyboard and save time: Visual Basic 2005 Keyboard Shortcut Reference Poster Visual C# 2005 Keyboard Shortcut Reference Poster Visual C++ 2005 Keyboard Shortcut Reference Poster Microsoft, what about providing that for the Business Intelligence Developer Studio and the SQL Server Management Studion also??

PASS Germany is doing a BootCamp again this year!
[Even if it is an event in German language I am writing in English - please spread this news around in your blogs though interested community members have the chance to participate]
We are slightly breaking traditions this year, because we are not having a complete BI-focused BootCamp, we are having two different tracks this time:
- the first one is DBA-stuff including performance optimization, clustering, mirroring, security, etc
- the second one is a deep dive into SQL Server Reporting Services including development, design, security, infrastructur and 3rd party tools like Dundas also
With one habit we do not break traditions! We have included three suprising night sessions again and also two late night sessions - stay tuned!
For further information visit the event page - if you want to register, please use this link.
The Early-Bird ends at 9th July 2007 and the seats are limited - so register as fast as possible...
|