Tuesday, June 28, 2011

SqlAgentAliveJob

Verwendung von sp_send_dbmail um sich vom SqlAgent mittels täglichem Job eine Alive Mail schicken zu lassen:

declare @x as nvarchar(max)
set @x=@@SERVERNAME +' sql agent is alive at '+CONVERT(nvarchar(max),GETDATE(),121)
--select @x
exec msdb.dbo.sp_send_dbmail
@profile_name='dbm',
@recipients='x@y.z',
@subject=@x,
@body='Diese Nachricht wurde von Sql Agent Job SqlAgentIsAliveMail generiert - bitte nicht beantworten'

Monday, June 27, 2011

nützliche SqlServerAlerts

folgendes Script erzeugt im SqlAgent unter Alerts für alle genützen Severities Alerts - wenn man einen Operator definiert kann dieser dann benachrichtigt werden (Properties, Response). Vorraussetzung unter SqlAgentProperties ist unter AlertSystem EnableMailProfile eingestellt ...

@include_event_description_in=1 => alert text wird in emails mitgeschickt

Gleich dannach ist ein Script, dass Email Notifications für alle mit Script 1 erzeugten Alerts erstellt, wobei der Operatorname ganz am Anfang des Scripts im Set richtig eingestellt werden muss - kann man aber auch direkt beim Operator im ssms einstellen


USE [msdb]
GO

/****** Object: Alert [001misc] Script Date: 06/27/2011 16:10:04 ******/
EXEC msdb.dbo.sp_add_alert @name=N'001misc',
@message_id=0,
@severity=1,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** 2-6 Reserved *****************************/

/****** Object: Alert [007notifyStatus] Script Date: 06/27/2011 16:12:16 ******/
EXEC msdb.dbo.sp_add_alert @name=N'007notifyStatus',
@message_id=0,
@severity=7,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [008UserInterventionRequired] Script Date: 06/27/2011 16:27:57 ******/
EXEC msdb.dbo.sp_add_alert @name=N'008UserInterventionRequired',
@message_id=0,
@severity=8,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [009UserDefined] Script Date: 06/27/2011 16:27:57 ******/
EXEC msdb.dbo.sp_add_alert @name=N'009UserDefined',
@message_id=0,
@severity=9,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO


/****** Object: Alert [010Info] Script Date: 06/27/2011 16:13:02 ******/
EXEC msdb.dbo.sp_add_alert @name=N'010Info',
@message_id=0,
@severity=10,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [011DbObjectNotFound] Script Date: 06/27/2011 16:13:02 ******/
EXEC msdb.dbo.sp_add_alert @name=N'011DbObjectNotFound',
@message_id=0,
@severity=11,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/** 12 unused ******/
/****** Object: Alert [013UserTransactionSyntaxError] Script Date: 06/27/2011 16:13:02 ******/
EXEC msdb.dbo.sp_add_alert @name=N'013UserTransactionSyntaxError',
@message_id=0,
@severity=13,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [014lowPermission] Script Date: 06/27/2011 16:25:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'014lowPermission',
@message_id=0,
@severity=14,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'

/****** Object: Alert [015SqlSyntaxError] Script Date: 06/27/2011 16:13:02 ******/
EXEC msdb.dbo.sp_add_alert @name=N'015SqlSyntaxError',
@message_id=0,
@severity=15,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [016MiscUserError] Script Date: 06/27/2011 16:13:02 ******/
EXEC msdb.dbo.sp_add_alert @name=N'016MiscUserError',
@message_id=0,
@severity=16,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO


/****** Object: Alert [017LowResources] Script Date: 06/27/2011 16:12:49 ******/
EXEC msdb.dbo.sp_add_alert @name=N'017LowResources',
@message_id=0,
@severity=17,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** Object: Alert [018InternalError] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'018InternalError',
@message_id=0,
@severity=18,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [019FatalResource] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'019FatalResource',
@message_id=0,
@severity=19,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** Object: Alert [020FatalCurProc] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'020FatalCurProc',
@message_id=0,
@severity=20,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [021FatalDbProc] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'021FatalDbProc',
@message_id=0,
@severity=21,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO

/****** Object: Alert [022FatalTableIntegr] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'022FatalTableIntegr',
@message_id=0,
@severity=22,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** Object: Alert [023FatalDbIntegr] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'023FatalDbIntegr',
@message_id=0,
@severity=23,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** Object: Alert [024FatalHardwareError] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'024FatalHardwareError',
@message_id=0,
@severity=24,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
/****** Object: Alert [025FatalError] Script Date: 06/27/2011 16:10:21 ******/
EXEC msdb.dbo.sp_add_alert @name=N'025FatalError',
@message_id=0,
@severity=25,
@enabled=1,
@delay_between_responses=3600,
@include_event_description_in=1,
@category_name=N'[Uncategorized]',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO


/**************************** UND NOTIFICATIONS EINSTELLEN, OPERATOR NAME RICHTIGSTELLEN !!!! ****************************************************************



USE [msdb]
GO

DECLARE @Operator as nvarchar(MAX)
SET @Operator='operatorname';

EXEC dbo.sp_add_notification @alert_name = N'011DbObjectNotFound',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [001misc] Script Date: 06/27/2011 16:10:04 ******/
EXEC dbo.sp_add_notification @alert_name = N'001misc',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** 2-6 Reserved *****************************/

/****** Object: Alert [007notifyStatus] Script Date: 06/27/2011 16:12:16 ******/
EXEC dbo.sp_add_notification @alert_name =N'007notifyStatus',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [008UserInterventionRequired] Script Date: 06/27/2011 16:27:57 ******/
EXEC dbo.sp_add_notification @alert_name =N'008UserInterventionRequired',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [009UserDefined] Script Date: 06/27/2011 16:27:57 ******/
EXEC dbo.sp_add_notification @alert_name =N'009UserDefined',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email



/****** Object: Alert [010Info] Script Date: 06/27/2011 16:13:02 ******/
EXEC dbo.sp_add_notification @alert_name =N'010Info',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [011DbObjectNotFound] Script Date: 06/27/2011 16:13:02 ******/
EXEC dbo.sp_add_notification @alert_name =N'011DbObjectNotFound',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/** 12 unused ******/
/****** Object: Alert [013UserTransactionSyntaxError] Script Date: 06/27/2011 16:13:02 ******/
EXEC dbo.sp_add_notification @alert_name =N'013UserTransactionSyntaxError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [014lowPermission] Script Date: 06/27/2011 16:25:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'014lowPermission',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [015SqlSyntaxError] Script Date: 06/27/2011 16:13:02 ******/
EXEC dbo.sp_add_notification @alert_name =N'015SqlSyntaxError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [016MiscUserError] Script Date: 06/27/2011 16:13:02 ******/
EXEC dbo.sp_add_notification @alert_name =N'016MiscUserError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email



/****** Object: Alert [017LowResources] Script Date: 06/27/2011 16:12:49 ******/
EXEC dbo.sp_add_notification @alert_name =N'017LowResources',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [018InternalError] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'018InternalError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [019FatalResource] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'019FatalResource',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [020FatalCurProc] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'020FatalCurProc',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [021FatalDbProc] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'021FatalDbProc',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email


/****** Object: Alert [022FatalTableIntegr] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'022FatalTableIntegr',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [023FatalDbIntegr] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'023FatalDbIntegr',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [024FatalHardwareError] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'024FatalHardwareError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email

/****** Object: Alert [025FatalError] Script Date: 06/27/2011 16:10:21 ******/
EXEC dbo.sp_add_notification @alert_name =N'025FatalError',
@operator_name = @Operator,
@notification_method = 1 ; -- 1 = Email
GO

Thursday, May 19, 2011

COM

Komponenten werden mit regsvr32.exe registriert => in der Registry wird unter HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8.......-AE99-4A26-A9A8-B847F8C70629}\InprocServer32
der Pfad zum Executeable abgelegt.
unter HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{8......-AA99-4A26-A9A8-B847F8C70629}\VersionIndependentProgID wird der eindeutige COM NAme abgelegt, unter dem dann z.b. mittels vbs:
Set oChecker=CreateObject("eindeutiger Name") das Objekt kreiert werden kann.

OLECHAR* BSTR : hat Längeninfo in den ersten zwei bytes und end marke ! _> daher immer mit SysAllocString initialisieren, da wird die richtige Länge gleich eingetragen

Wednesday, April 06, 2011

Database Snapshot erstellen

Ein Snapshot (Read only Kopie eines Datenbankstandes) kann nicht aus dem SSMS per Menü erstellt werden sondern nur über TSQL:

CREATE DATABASE SnapshotDbName ON
( NAME = originalDbFileNameLogisch, FILENAME = 'Pfad zu neu zu erstellender Snapshot Datei' )
AS SNAPSHOT OF OrignialDbName;
GO

beim erstellen des Snapshots ist der logische Filename nicht frei wählbar, sondern der logische Name des Datenfiles in der Original Db,sonst erhält man:

Msg 5014, Level 16, State 3, Line 1
The file 'TestSS20110404_Data' does not exist in database 'Test'.

Wichtig: die Original Datenbank darf nicht im No Recovery Mode sein sonst erhält man:
Msg 1822, Level 16, State 1, Line 1
The database must be online to have a database snapshot.

z.b.:
CREATE DATABASE TestSS20110406 ON
( NAME = Test, FILENAME = 'E:\SqlDbs\TestSS20110406.ss' )
AS SNAPSHOT OF Test;
GO

erstellt unter Datenbanken\Snapshots eine readonly Kopie der Datenbank Test, die nur ein physikalisches Datenfile mit logischem Namen Test hat (siehe DatenbankProperties\Files)

Tuesday, April 05, 2011

Telnet auf SQL Server 2008

unter Features Telnet Client aktivieren

Monday, April 04, 2011

Sql Server Replikation / Log Shipping 2005->2008R2

Replikation Sql Server 2005 SP3-> 2008R2:
=========================================
generell: wenn man vom SSMS (Sql Server Management Studio) Replikation einrichten will, muß man sich mit dem Netzwerknamen des Servers einloggen, nicht mit localhost, IP Adressen oder sonstigen Aliasen, sonst erhält man die irreführende Fehlermeldung: MMSM is unable to access replication components because replication is not installed on this instance of SQL Server.
Für die Publikation ist ein Distributer nötig (rechte Maustaste auf Replikations Knoten im SSMS)

Snapshot:
---------
geht ohne Probleme

Transactional:
-------------
geht, die zu replizierenden Tabellen müssen einen primary key haben, sonst erhält man: Database 'DB_NAME' contains no objects that can be replicated with the selected publication type. Click Back to choose another database or change the publication type, Performance: Distributor auf eigenem server

Merge:
------
Fehlermeldung "For merge Publications, the version of the Subscriber must not exceed the version of the Publisher."

LogShipping:
============
geht nur im "No Recovery Mode" und nicht im Standby Mode

Tuesday, March 29, 2011

RunDLL und RunDLL32

Zitat: "RunDLL ruft Funktionen auf, die entweder aus 16bit-DLLs (RunDLL.exe) oder 32bit-DLLs (RunDLL32.exe) exportiert werden. RunDLL unterstützt diese Funktionalität nur für solche DLLs, die diese Aufruf-Möglichkeit explizit unterstützen - so können beispielsweise die System-DLLs des API nicht genutzt werden." Source/Quelle: BasicPro

Die generelle Syntax für die Nutzung von RunDLL:

RUNDLL.EXE , [opt. Argumente]
bzw.
RUNDLL32.EXE , [opt. Argumente]

Bei Ausfürung ist die Groß/Kleinschreibung zu beachten!

Oder sind Sie speziell auf der Suche nach Druckersteuerung per Kommandzeile?


--------------------------------------------------------------------------------
Praktische Anwendungsmöglichkeiten


Allgemein:

rundll32.exe shell32.dll,Control_RunDLL
Zeigt die Systemsteuerung in Explorer-Stil an.


Eingabehilfen: (Modul: access.cpl)

rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
Zeigt die Tastatur-Eigenschaften für die Eingabehilfen an.


rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
Zeigt die Audio-Eigenschaften für die Eingabehilfen an.


rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
Zeigt die Anzeige-Eigenschaften für die Eingabehilfen an.


rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
Zeigt die Maus-Eigenschaften für die Eingabehilfen an.


rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
Zeigt die generellen Eigenschaften für die Eingabehilfen an.


Anzeige: (Modul: desk.cpl)

rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
Zeigt "Eigenschaften von Anzeige - Hintergrund" an.


rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
Zeigt "Eigenschaften von Anzeige - Bildschirmschoner" an.


rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
Zeigt "Eigenschaften von Anzeige - Darstellung" an.


rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
Zeigt "Eigenschaften von Anzeige - Einstellungen" an.


Grundeinstellungen: (Modul: main.cpl)

rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
Zeigt "Eigenschaften von Maus - Tasten" an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
Zeigt "Eigenschaften von Tastatur - Geschwindigkeit" an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,1
Zeigt "Eigenschaften von Tastatur - Sprache" an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,2
Zeigt "Eigenschaften von Tastatur - Allgemein" an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
Zeigt den Drucker-Ordner im Explorer-Stil an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
Zeigt den Schriftarten-Ordner im Explorer-Stil an.


rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
Zeigt die Energiesparfunktionen an.


Multimedia: (Modul: mmsys.cpl)

rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0

Zeigt "Eigenschaften von Multimedia - Audio" an.


rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 Zeigt "Eigenschaften von Multimedia - Video" an.


rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
Zeigt "Eigenschaften von Multimedia - MIDI" an.


rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
Zeigt "Eigenschaften von Multimedia - Musik-CD" an.


rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
Zeigt "Eigenschaften von Multimedia - Erweitert" an.


rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
Zeigt den Dialog "Akustische Signale" an.


Ländereinstellungen:(Modul: intl.cpl)

rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
Zeigt "Eigenschaften von Ländereinstellungen - Gebietsschema" an.


rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
Zeigt "Eigenschaften von Ländereinstellungen - Zahlen" an.


rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
Zeigt "Ländereinstellungen - Währung" an.


rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
Zeigt "Ländereinstellungen - Uhrzeit" an.


rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
Zeigt "Ländereinstellungen - Datum" an.


System:(Modul: sysdm.cpl)

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
Zeigt "Eigenschaften für System - Allgemein" an.


rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
Zeigt "Eigenschaften für System - Geräte-Manager" an.


rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
Zeigt "Eigenschaften für System - Hardwareprofile" an.


rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
Zeigt "Eigenschaften für System - Leistungsmerkmale" an.


rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
Zeigt den Hardware-Assistenten zur Installation neuer Hardware-Komponenten an.


Netzwerk: (Modul: netcpl.cpl)

rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
Zeigt die "Netzwerk - Konfiguration" an.


Kennwörter: (Modul: password.cpl)

rundll32.exe shell32.dll,Control_RunDLL password.cpl
Zeigt "Eigenschaften von Kennwörter - Kennwörter ändern" an.


Datum/Uhrzeit: (Modul: timedate.cpl)

rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
Zeigt "Eigenschaften von Datum/Uhrzeit- Datum und Uhrzeit" an.


rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
Zeigt "Eigenschaften von Datum/Uhrzeit- Zeitzone" an.


Joystick: (Modul: joy.cpl)

rundll32.exe shell32.dll,Control_RunDLL joy.cpl
Zeigt "Eigenschaften von Joystick- Joystick" an.


Modems: (Modul: modem.cpl)

rundll32.exe shell32.dll,Control_RunDLL modem.cpl
Zeigt "Eigenschaften für Modems - Allgemein" an.


rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
Zeigt den Wizard "Neus Modem installieren" an.


Software: (Modul: appwiz.cpl)

rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
Zeigt "Eigenschaften von Software - Installieren/Deinstallieren" an.


rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
Zeigt "Eigenschaften von Software - Windows-Setup" an.


rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
Zeigt "Eigenschaften von Software - Startdiskette" an.


rundll32.exe appwiz.cpl,NewLinkHere c:\temp
Startet den Verknüpfungs-Assistenten und legt im angegebenen Verzeichnis die vom Benutzer angegebene Verknüpfung an


Sonstiges:
rundll32.exe shell32.dll,Control_FillCache_RunDLL
Läßt Windows die Systemsteuerung neu einrichten.


rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl
Zeigt den Administrator-Dialog für ein Microsoft Workgroup-Postoffice an.


rundll32.exe shell32.dll,OpenAs_RunDLL c:\datei.asd
Zeigt den "Öffnen mit"-Dialog an und assoziiert (bei entsprechend aktivierter Dialog-Option) bei Anwendungsauswahl die Dateiendung (hier: .asd) mit der ausgewählten Anwendung.


rundll32.exe shell32.dll,SHFormatDrive
Zeigt den "Diskette formatieren"-Dialog an.


rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
Ruft den Assistenten für die Druckerinstallation auf.


rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintTestPage
Druckt eine Testseite auf dem aktuellen Drucker.


rundll32.exe rnaui.dll,RnaWizard
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (mit vorheriger Erklärung).


rundll32.exe rnaui.dll,RnaWizard @1
Ruft den Assistenten für eine DFÜ-Netzwerkverbindung auf (ohne Erklärung).


rundll32.exe rnaui.dll,RnaDial Internet
Ruft den Assistenten "Verbinden mit" mit dem angegebenen Verbindungsnamen auf.


rundll32.exe syncui.dll,Briefcase_Intro
Zeigt ein Informationsfenster zum Windows-Aktenkoffer an.


rundll32.exe syncui.dll,Briefcase_Create
Legt einen neuen Aktenkoffer an (nähere Verwendung noch unklar).


rundll32.exe diskcopy.dll,DiskCopyRunDll
Ruft den Dialog "Diskette kopieren" auf.


rundll32.exe sysdm.cpl,DMFistTimeSetup
Ruft den (alleine recht sinnfreien) Dialog "Hardwarekonfiguration" mit einer Meldung "Die Konfiguration des Computers wird vervollständigt" auf.


rundll32.exe url.dll,FileProtocolHandler http://masterbootrecord.de
Ruft die angegebene Datei oder Adresse in der assoziierten Anwendung auf.


rundll32.exe url.dll,TelnetProtocolHandler 194.45.127.79
Stellt eine Telnet-Verbindung zum angegebenen Rechner her.


rundll32.exe url.dll,MailToProtocolHandler webmaster@masterbootrecord.de
Ruft das Standard-Mailprogramm auf.


rundll32.exe url.dll,NewsProtocolHandler de.prog.perl
Ruft den Standard-Newsreader auf.


rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
Zeigt die Eigenschaftsseite des Microsoft-Exchange-Profils an.


rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system\ssaver.scr
Installiert einen vorhandenen Bildschirmschoner.


rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl @1
Zeigt (bei installiertem Internet Explorer) den Dialog "Benutzereinstellungen - Benutzerliste" an.


rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0
Zeigt (bei installiertem Internet Explorer) den Dialog "Eigenschaften von Internet - Allgemein" an.


Rundll32.exe user,ExitWindows
Beendet Windows.


Rundll32.exe user,ExitWindowsExec
Startet Windows neu.


Rundll32.exe krnl386.exe,exitkernel
Beendet Windows auf eine unsanfte Art...


Rundll32.exe user,disableoemlayer
Lässt Windows die grafische Oberfläche deaktivieren. Man sieht nur noch einen Blinkenden Cursor... Netter Gag.


Rundll32.exe user,repaintscreen
Aktualisiert die Anzeige (F5).


Rundll32.exe user,setcursorpos
Setzt den Mauscursor in die linke obere Ecke.


Rundll32.exe user,swapmousebutton
Vertauscht bis zum nächsten Neustart die beiden Maustasten.


Rundll32.exe keyboard,disable
Deaktiviert bis zum nächsten Neustart die Tastatur.


Rundll32.exe mouse,disable
Deaktiviert bis zum nächsten Neustart die Maus.

Thursday, January 27, 2011

Default Value bei Stored Procedure TSQl

ALTER PROCEDURE testRaiseError
@Severity int =18
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

Raiserror('Test Raiserrror',@Severity,10)
END

Transaktionen und Fehlerbehandlung in TSQL

Beispiel Insert und Update in einer Transaktion, wenn eines fehlschlägt wird zurückgerollt und der Fehler weitergegeben


BEGIN TRAN T1
BEGIN TRY
--write all values to mcit.auditrail (@UserId)
INSERT INTO [AuditTrail] ([ActionType],[ObjectType],[ObjectId],[OldValues],[NewValues],[UserId])
SELECT 'Update','Products',Id,CONVERT(Nvarchar(MAX),Price),CONVERT(Nvarchar(MAX),Price*@PriceFact),@UserId
from product where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0


update mcit.product set Price=Price*@PriceFact where [year]=@Year and SupplierGroupId=@SupplierGroupId and IsDeleted=0
END TRY
BEGIN CATCH
print 'Fehler in Transaktion aufgetreten - Rolle zurück'
ROLLBACK TRAN T1

DECLARE @MSG NVARCHAR(MAX) SET @MSG=ERROR_MESSAGE()
DECLARE @SEV INT SET @SEV=ERROR_SEVERITY()
DECLARE @STA INT SET @STA=ERROR_STATE()
RAISERROR (@MSG,@SEV,@STA)
RETURN
END CATCH
COMMIT TRAN T1

END

Monday, January 24, 2011

MSI entpacken mittels MSIEXEC

msiexec /a DATEINAME.msi /qn TARGETDIR="PFAD"
wichtig: Rargetidrpfad muss nicht existieren, darf aber nicht das msi file enthalten

Monday, December 27, 2010

sqlserver managementstuido spaltenüberschriften in abfrageergebnis Copy

Optionen / Abfrageergebnis / SQL Server / Ergebnisse in Raster / Spaltenheader beim Kobieren ... einschliessen

Tuesday, December 21, 2010

COM (OLE) Server in C#

Com Überblick:

OLE Automation dient dem Zugriff auf Com Objekten con Script Sprachen aus, diese benötigen ein Late Binding, da ja kein Compiler vorhanden ist, der das Binding vor der Laufzeit macht. Daher gibt es das IDispatch Interface, alle OLE Server müssen dieses Implementieren.

In c# erledigt die ganze Interfacedefinition usw. die Attributierung der Klasse, die COM zur Verfügung gestellt werden soll - wichtig: in VS2008 und VS2010 muss man ComVisible(true) explizit angeben, früher war dies im Attribut ClassInterface enthalten ... im Projekt vom Typ Class Library sollte unter Properties/Build/Output register for Com interop angehackt sein, das registriert den OLE Server gleich und generiert die Type Librarty, die für Script Sprachen die vorhandenen Methoden zur Verfügung stellt. Man kann dies aber auch mit regasm oder tlbexp Ole6.dll /out:Ole5.tlb machen


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;


namespace Ole6
{
[Guid("9C78E2DB-E664-47BE-A2C2-213AA2005078"),
ClassInterface(ClassInterfaceType.AutoDual),
ComVisible(true)]
public class Ole6
{
public Ole6() { }
public string Test()
{
return "Test";
}

}

}

Sunday, December 19, 2010

.net TextfileTracelistener adden

ins app.config File einfügen:

system.diagnostics
trace autoflush="true" indentsize="2"
listeners
add name="textfilelistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Log.txt"
listeners
trace
system.diagnostics

im code verwenden:

Trace.TraceInformation(Application.ExecutablePath + " started at " + DateTime.Now.ToString());

windows forms anzeige refrehsen während hintergrundtask im selben thread läuft

eigentlich ist es ja nicht schön, einen längerdauernden task im GUI Thread laufen zu lassen, aber bei quick & dirty testforms macht es ab und zu sinn. Wenn man den status des länger dauernden tasks dann anzeigen will, ist es sinnvoll nicht nur
this.refresh(); aufs formular in der langdauernden schleife aufzurufen sondern auch
Application.DoEvents(); ... dann werden die ganzen Windwos Messages abgearbeitte, die z.b. durch progressbar.PerformStep() ausgelöst werden ...

Thursday, December 02, 2010

eigene config klasse

muss von ConfigurationSection abgeleitet sein, braucht eine Property SectionName, anbei der Code zum lesen und Schreiben, bei Fehlersuche ist es ratsam im Visual Studio unter Debug/Exceptions bei CLR Exceptions das Häckchen bei Thrown anzuhacken, da Fehler sonst vom Configurationmanager unterdrückt werden. Aktiviert man aber dass die Ausführung bei thrown Exceptions unterbricht,bekommt man die Orignal Fehlermeldung des Configurationmanagers.


private string _SectionName;
public string Name
{
get
{
return this.SectionInformation.Name;
}
}
public string SectionName
{
get
{
return _SectionName;
}
set
{
_SectionName = value;
}
}

public static List GetSectionsFromConfig()
{
Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroup csg = c.GetSectionGroup("DataContextParams");
List ldcp = new List();
foreach (DataContextParams dcp in csg.Sections)
{
ldcp.Add(dcp);
}
return ldcp;
}

///
/// schreibt dieses Objekt in die Config
///

/// wenn null wird in die execonfig geschrieben
public void SaveSectionToConfig(string configfile)
{
ExeConfigurationFileMap oConfigFile = new ExeConfigurationFileMap();
Configuration oConfiguration;
if (null == configfile)
{
oConfiguration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
else
{
oConfigFile.ExeConfigFilename = configfile;
oConfiguration = ConfigurationManager.OpenMappedExeConfiguration(oConfigFile, ConfigurationUserLevel.None);
}

//Add it to the configuration's sections
oConfiguration.Sections.Add(SectionName, this);

//Save the given section in the configuration file
this.SectionInformation.ForceSave = true;
oConfiguration.Save(ConfigurationSaveMode.Full);

}

schreiben in app.config

Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configuration.AppSettings.Settings.Remove("Test");
configuration.AppSettings.Settings.Add("Test","meinTestWert");
configuration.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

Tuesday, November 16, 2010

PostgresSql

einspieln von sql scripts:
-h host
--username=...
-f file
-d datenbank

psql -h localhost --username=s2010_admin -f c:\sql\test.sql -d s2010

autoincrement=bigserial (=8byte integer), zusätzlich primary key angeben !

create table Einnahmeform ( javascript:void(0)
ID BIGSERIAL CONSTRAINT PK PRIMARY KEY,
Einnahmeform varchar(80)
);

alle tabellen in einem schema
SELECT table_name FROM information_schema.tables where table_schema='schemaname'

Thursday, October 21, 2010

delagtes Übersicht

delegate void TestDelegate(string s);
TestDelegate testDelA = new TestDelegate(M); //C#1.0 explicite Method M must me declared
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; //C#2.0 inline "anonymos method
TestDelegate testDelC = (x) => { Console.WriteLine(x); }; // C# 3.0. lambda expr.
Action TestDelegate; //C#4.0 DelegateDefinition einfacher //C# 4.0 Actions

In Windows Forms muss eine anonyme Methode noch zu einem MethodInvoker konvertiert werden:
this.Invoke(new MethodInvoker(delegate() { pgbStatus.Minimum = 0; }));

In Wpf zu einer Action:
Application.Current.Dispatcher.Invoke((Action)delegate
{
SetButtonsEnabled(true);
}, null);

Sql Server 2008 Resource Governator

Resource Governtor steuert CPU und Memory Consumption von Connections. Eine ResourceGovernorClassifier Funktion wird verwendet um LoginName zu einer Workloadgruppe zuzuordnen, die ihrerseits wieder einem ResourcePool zugeordnet ist. Ein Resourcepool kann mehrere Workloadgruppen haben, die sich auch in Resourcezuordnung unterscheiden können, also ein 2 stufiges Resourcevergabeschema.

Funktion zum Zuordnen der Logins zu den Workloadgruppen (setzt Vorraus dass diese existieren):

Alter Function dbo.fn_ResourceGovernorClassifier()
Returns sysname
WITH Schemabinding
as
BEGIN
DECLARE @group sysname
IF SUSER_SNAME()='Executive' SET @group='ExecutivesWL'
ELSE IF SUSER_SNAME()='Customer' SET @group='CustomersWL'
ELSE IF SUSER_SNAME()='Report' SET @group='ReportWG'
ELSE SET @group='default'

RETURN @group
END
GO

ALTER RESOURCE GOVERNOR WITH (Classifier_Function = dbo.fn_ResourceGovernorClassifier)
GO

ALTER RESOURCE GOVERNOR RECONFIGURE
GO

Create Login Executive with password='pwd'
Create Login Customer with password='pwd'
Create Login Report with password='pwd'

SELECT b.name,a.login_name, a.session_id
from sys.dm_exec_sessions a inner join sys.dm_resource_governor_workload_groups b on a.group_id=b.group_id
where b.name<>'internal'

Thursday, October 14, 2010

Outlook Autovervollständigungen in 2010 importieren

bis outlook 2007 wurden die AUtovervollständigungen in AppData/Roaming/Microsoft/Outlook/Profilname.nk2 gespeichert. In 2010 werden diese am Exchange Server gespeichert. Daher Nk2 Datei in obiges Verzeichnis mit Profilnamen kopieren, dann Outlook.exe /importnk2 ausführen ...