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 ...

Friday, September 10, 2010

Clustering

Windows Server Clustering:
==========================
Standard Clustering: eine Quorum Datenbank = Single Point of Failure
Majority: jede node eine Kopie der Quorum Datenbank \\%NodeName%\%ResourceGUID%$ share auf Quorum Db in %SystemRoot%\Cluster\QuN.

%ResourceGUID%$\%ResourceGUID%\MSCS
ClusterAccount muss locale Admin Rechte haben

Disk:
-----
keine dyn. Disk unterstütz, SCSI oder Fibre HD
MS DTC Disk
Antivirus software: Database Dirs ausnehmen, da sonst failover zu lange dauert
Network:
--------
2 Netwerkkarten: internes Netzwerk (Cluster Netzwerk) über dieses wird ping looksalive gesendet, wenn keine Antwort failover process

gestartet, öffentliches Netzwek
RPC wird benötigt
beim failover wird der netzwerkname des clusterst vom DNS unregisterded, dann wird die cluster Ip auf die netzwerkkarte des anderen

nodes geslegt und neu im dns registriert

SQLServerClustering:
====================
jede SQL Server Instanz bruacht einen eigenen Drive Letter, Transaktionen werden zurückgerollt beim Failover, es gibt kein Load Balancing bei SQL Server
Security Grouppe für jedes SQL Service als Domain Gruppe

Wichtig: Es können nach der Installation keine weiteren Features mehr hinzugefügt werden => Analysis Services z.b. gelich hinzufügen !

Tuesday, September 07, 2010

DateTimePicker an Dataset gebunden: Out of range exception

bei Dataset.Clear() ...

woraround: clear des tableadaptes verwenden, sodass das dataset gleich wieder gefüllt wird

Monday, September 06, 2010

ASP.Net C# Inline Markup

Mit spitzer Klammer auf, Prozent Zeichen wird ein c# inline Markup eingeleitet:

InlineDemo1: <%Response.Write("Date="+DateTime.Now); %>


config werte direkt in control properties schreiben (geht auch mit Resourcen):
InlineConfigValue: < asp:Literal runat="server" Text="<% $ AppSettings: test%>" />"

http://translate.google.at/translate?hl=de&langpair=en%7Cde&u=http://msdn.microsoft.com/en-us/library/d5bd1tad.aspx

Thursday, September 02, 2010

Rapid GUI Development mit VS2008 & Datasets

Vorgehensweise:
===============
1) fertiges Datenbank Design
2) Vs2008/Menü Data / Add New Datasource / Tabeeln, Views Functions 6 Stored Proc. aussuchen
3) einstellen ob Tabellen / Detailansicht und mittels Drag & Drop die Datatabels aus dem Dataset in den Windows Forms Designer ziehen
4) Namen der generierten Tableadapter, BindingSource eventuell anpassen, Shortcut für Datatables erstellen
5) Spalten der Datagrids Formatieren
6) anpassen des generierten Codes

Was wird generiert ?
====================
1) Datenbankobjekte -> Dataset ziehen:
generiert Tableadapter und Datatable pro Tabelle / SotredProc oder Function
2) Datatables aus dem Dataset -> Formular ziehen:
genereirt Instanz des Datasets, Tableadapter+tableAdapterManager, Bindingsource, bindingsourceNavigator, toolstrip + Datagridview / einzelne Controls für Felder

Was bringt das ?
================
Der Columndesigner des Datasets erspart viel Tipparbeit, die generierten Datenzugriffselemente müssen meist händisch angepasst werden ...

Wednesday, September 01, 2010

Dataset und TableAdapter generieren und updaten

Um Datasets von einer bestehenden Datenbank zu erzeugen, einfach im Visual Studio im Menü Data "Create New Datasource" auswählen. Ein Wizard frägt die Datenbankverbindung ab, dann kann man auswählen welcehe Tabellen, Views und Functions/StoredProcedures man im Dataset haben möchte (bei Lightswitch gehen nur Tabellen und Views derzeit).
Dann werden für die ausgewählten Einträge DataTables und TableAdapter (zum Befüllen) erzeugt. bei Auswahl von Tabellen kann der Dataadapter auch Updates und Deletes sowie INserts machen. bei StoredProc usw. nur Select.
ändert sich an der Definition des Datenbankobjektes etwas, so kann man das im Dataset Designer mit rechter Maustaste auf die Datatable und Configure anpassen. Wenn Tabellendefinitionen geändert werden, ist es wichtig auch alle table valued functions, die darauf passieren anzupassen. Hinzufügen von Feldern ist dem Dataset egal, da es das SQL REsultset und die Dataset Spalten per Name mapped.
Wichtig: Constraint Fehlerkönnen sich sowohl auf Schlüsselverletzungen aber auch Feldconstraint (nicht null, Länge) beziehen, da ist die Fehlermeldung der Tableadapter.Fill Methode sehr unaussagekräftig.

Tuesday, August 31, 2010

javascript debugging

Im Firefox gibts das Plugin Firebug, und dann kann man mit
console.log("my trace"); im consolen Fenster logs erzeugen - internet explorer 8 bricht das javascript ab wenn copnsole.log erscheint

Friday, August 20, 2010

Properties / Settings in C#

Wenn man in einem Windows Forms Projekt Settings hinzufügt (über Projekteigenschaften Settings oder Ordner Porperties Settings.settings)
wird in der App.config ein je nach Einstellung ApplicationSettings bzw. UserSettings Abschnitt erzeugt. Ist dieser nciht vorhanden, oder fehlen Settings darus, ist auch die Klasse dann im c# Code nicht über den Namespace Properties.Settings zu erreichen. Weiters werden Connectionstrings, also Settings vom Typ Connectionstings in die appconfigsection Connectionsstrings geschrieben (werden z.b. beim Anlegen eines Datasets über den Datasource Wizard erzeugt).
User Settings lassen sich über die Save Methode abspeichern (in den AppData Ordner des jeweiligen Benutzers in user.config), appsettings sind schreibgeschützt














testSettingValue






userTestValue



XPATH & Namespace

Sobald man mit XPATH Elemente mit Namespace finden will, braucht man ja nach verwendeter XPath Implementierung, eine Möglichkeit Namespaces und dazugehörige Prefixe zu übergeben.
//test sucht alle Elemente, die den Namen test und KEINEN NAMESPACE haben.

//pref:test sucht alle Elemente, die den Namen test und den Namespace, der dem prefix pref zugeordnet ist haben.

in .Net braucht man den XmlNamespaceManager:

XmlNode ret= ret = listService.UpdateListItems(strListID, batchElement);
XmlNamespaceManager xmlNsM = new XmlNamespaceManager(ret.OwnerDocument.NameTable);
xmlNsM.AddNamespace("z","#RowsetSchema");
sharepointGUID = ret.SelectSingleNode("//z:row/@ows_GUID", xmlNsM).Value;

siehe auch

Thursday, August 19, 2010

log4net config für Rolling file, Datenbank und smtp

appender schreiben die messages in files, mails, datenbanken; die messages werden mit den loggern erzeugt, wobei es eine logger hirachie gibt an deren SSpitze der root logger steht, der auch alle messages die in von anderen loggern erzeugt wurden loggt (also an seine appender weitergibt). So ist es möglich mit einem logger z.b. alle log messages eines namespaces (+subnamespaces) zu loggen, also einfaches Beispiel:

im Code:
public class Myclass
{
protected static ILog log = log4net.LogManager.GetLogger("System.Windows.Forms");

public static void TestLog()
{
log.Info("UpdateStockValues"+DateTime.Now);
}
}
in App.config:














nach Level filtern im Appender (loggt keine Info und Debug)





Levels:
•ALL
•DEBUG
•INFO
•WARN
•ERROR
•FATAL
•OFF

Beispiel für config die mittels root logger alles loggt in 3 Appender: file, datenbank und email:
























































































Tuesday, August 17, 2010

Windwos VPN Server

einfach Routing und access services mit wizard konfigurieren, wichtig: benutzer müssen einwahlrechte haben (Eigenscahften des Benutzers, Einwählen)
Protokolle: VPN Server: Routing und Acess, rechte Maustaste Eigenschaften, letzetses Tab Protokolle
Im System Protokoll findet man IP des Client von dem aus versucht wurde einzuloggen
PPTP: 1723 Port

Tuesday, August 10, 2010

W2008 Server WOL

Bei Windwos Server 2008 konnte ich WOL (Wake on LAN) zwar über den Gerätemanager, nicht aber über Netzwerkverbindungen Verwalten konfigurieren. Dort steht unter Eigenschaften der Verbindung, Konfigurieren,
Energieverwaltung, Der Computer kann das Gerät ausschalten um Energie zu sparen, Das Gerät kann den Computer aus dem Ruhezustand aktivieren usw. komplett etwas anderes als eben im Gerätemanger unter derselben Netzwerkkarte. Auch merkt er sich die dort geänderten Einstellungen nciht, wohl aber wenn ich das im Gerätemanager ändere. EIn Bug im Treiber der Realtek PCIe FE Family Controller oder in W2008 ??? Habe leider keinen gleichen Server mit anderer NEtzwerkkarte um zu testen ...

Thursday, July 29, 2010

javascrip: suchen nach Id

GetElementById funktioniert auf manchen objekten nciht, und wenn man relativ suchen möchte bleibt einem nur jquery oder:

function FindChild(par, childid) {
for (i = 0; i < par.childNodes.length; i++) {
x = par.childNodes[i];
if (childid == x.id) return x;
f = FindChild(x, childid);
if (null != f) return f;
}
return null;
}

Wednesday, July 28, 2010

Identy von INSERT INTO zurückbekommen

ADO Commandtext "INSERT INTO tbl (test) VALUES (@test);" und SQLOut Parameter @@IDENTITY liefert Fehler "incorrect syntax near @@IDENTITY"

auch "INSERT INTO tbl (test) VALUES (@test);Select @@Identity as @Id" und SQLOut Parameter @Id liefert Fehler "incorrect syntax near @Id"

Lösung:
SET NOCOUNT ON; INSERT INTO tbl (test) VALUES (@test); SELECT @@IDENTITY as Id; mit ExecuteScalar ausführen, gibt object zurück mit Id als decimal

Wednesday, July 21, 2010

Sql Server Änderungs Verfolgungs Technologien:

Trigger
SqlDependency … .net Callback (Query Notification OnChange), aber viele Einschränkungen im Select
CDC … ChangeDataCapture …Inhalt der geänderten Spalten in Tabelle_CT (pro Tabelle die man verfolgt eine Änderungstabelle)
CT Change Tracking … nur Primary Key der geänderten Zeilen
SqlTrace … loggt in Files
Notify … Depricated, Notifikationen auf SMS, EMail, http usw.

CT einschalten:
ALTER DATABASE NotificationTest SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 3 DAYS, AUTO_CLEANUP = ON)

SELECT * FROM sys.change_tracking_databases

ALTER DATABASE NotificationTest SET ALLOW_SNAPSHOT_ISOLATION ON;

ALTER TABLE dbo.Tasks ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED = ON)

SELECT * FROM sys.change_tracking_tables
--Änderungen abfragen
SELECT * FROM CHANGETABLE (CHANGES dbo.Tasks,0) as CT


CDC einschalten:
EXEC sys.sp_cdc_enable_db


EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'Tasks',
@role_name = NULL,
@supports_net_changes = 1


select * from cdc.captured_columns
select * from cdc.change_tables
select * from cdc.dbo_Tasks_CT --- History (alle Datensätze vorher, Nachher)

Web Controls Dynamisch Erzeugen / Web Page Lebenszyklus

Controls immer in PreInit erzeugen (vorher werden die durch den aspx html angegebenen controls erzeugt), dannach werden sie in Init initialisiert (also z.b. Viewstate=Value reingeschrieben ...)


Ein Beispiel mit DropDowns:

public partial class _Default : System.Web.UI.Page
{
//Lebenszyklus: http://msdn.microsoft.com/en-us/library/ms178472.aspx
//Page_PreInit
//Page_Init
//Page_InitComplete
//Page_Load

const int ddlMax=9;
DropDownList[] ddls = new DropDownList[ddlMax];

protected void Page_PreInit(object sender, EventArgs e)
{
/*
Raised after the start stage is complete and before the initialization stage begins.
Use this event for the following:
Check the IsPostBack property to determine whether this is the first time the page is being processed. The IsCallback and IsCrossPagePostBack properties have also been set at this time.
Create or re-create dynamic controls.
Set a master page dynamically.
Set the Theme property dynamically.
Read or set profile property values.

Note
If the request is a postback, the values of the controls have not yet been restored from view state. If you set a control property at this stage, its value might be overwritten in the next event.
*/

for (int i = 0; i < ddlMax; i++)
{
DropDownList ddlx = new DropDownList();
ddlx.ID = "ddl"+i.ToString();
for (int item = 0; item < i; item++)
{
ddlx.Items.Add(ddlx.ID + item.ToString());
}
form1.Controls.Add(ddlx);
ddls[i] = ddlx;
//panDDLs.Controls.Add(ddlx);

}
}
protected void Page_Init(object sender, EventArgs e)
{
/*
* Raised after all controls have been initialized and any skin settings have been applied. The Init event of individual controls occurs before the Init event of the page.
Use this event to read or initialize control properties.
*/
}
protected void Page_InitComplete(object sender, EventArgs e)
{
}
protected void Page_PreLoad(object sender, EventArgs e)
{
}
protected void Page_Load(object sender, EventArgs e)
{

Response.Write("


DropDownValues
");
for (int i = 0; i < ddlMax; i++)
{
Response.Write("ddl Nr.:" + i.ToString() + " value=" + ddls[i].SelectedValue+"
");
}
}
// ------------------ Control Events -------------------
protected void Page_LoadComplete(object sender, EventArgs e)
{
}
protected void Page_PreRender(object sender, EventArgs e)
{
}
protected void Page_PreRenderComplete(object sender, EventArgs e)
{
}
protected void Page_SaveStateComplete(object sender, EventArgs e)
{
}
protected void Page_Render(object sender, EventArgs e)
{
}
protected void Page_Unload(object sender, EventArgs e)
{
}

}

Thursday, July 08, 2010

Installationsprobleme bei SQL 2005

Das SQL 2005 Installationsprogramm prüft immer genau, ob bereits eine andere Installation vorhanden ist. So muss man z.b. wenn SQLExpress bereits installiert ist, entweder deinstallieren oder mit spezieller Option das Setup Programm einer anderen Version aufrufen.
Wenn man ein Service Pack installiert hat, können nur mehr über "Add and Remove Programms" Komponenten hinzugefügt werden.

Wednesday, July 07, 2010

Sharepoint integrated reporting services

benötig SQL Server SP2;
0) WICHTIG: ssrs (Reporting Service) nicht unter Local System account installieren, da dieser keinen Zugriff auf die Sharepoint Datenbank hat. Wichitg: wenn man bereits unter Local System installiert hat, unbedingt den DatabaseKey sichern, bevor man den Account wechselt, sonst hat man keinen Zugriff mehr auf die ReportServer DB und muß diese löschen und neu erzeugen

1) Reporting Services Configuration: Datenbank auf Sharepoint Integrierten Modus umstellen (wichtig geht nur mit SP2) => eine neue Datenbank wird erzeugt, diverse Rechte gesetz. Der ReportManager (http://server/Reports) funktioniert dann nicht mehr und liefert: Der -Vorgang wird auf einem Berichtsserver, der für die Ausführung im integrierten SharePoint-Modus konfiguriert ist, nicht unterstützt. (rsOperationNotSupportedSharePointMode) 2) Reporting Services-Add für Sharepoint Server installieren
die Reportserver WebAnwendung funktioniert aber nach wie vor http://server/Reportserver)

2) In der Sharepoint Central Administration unter Application Management / Reporting Services die ReportServer Url eintragen und die Datenbank Rechte vergeben, wichtig ist dass:
der Reporting Service User ssrs genannt, der den apppool der Report Server Anwendung betreibt, auf die Document Library am sharepoint Zugriff hat

Sharepoint sendet Request an Report Server Webapp, diese möchte sich Report Definition File rdl vom Sharepoint runterladen, das Windows Service,sollte Zugriff auf Sharepoint Dbs haben

3) erzeugen einer Documentlibrary ohne default typ, raufladen eines rdl files (am besten ohne shared datasource zum ausprobieren, mit Sql Server Credentials , man kann Datasource mit rechte Maustaste auf Report bearbeiten (Mangae Datasources), testen ob der Report funktioniert

4) Troubleshooting:
Integration service logs:
C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\LogFiles
sowie in Report Datenbank Tabelle Execution Log

Thursday, June 17, 2010

sharepoint logs

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\logs

Monday, May 31, 2010

Miniatur Ansicht statt Symbole im Explorer

Im Extras Menü / Ordneroptionen, Tab Ansicht "Immer Symbole statt Minituransicht anzeigen" abhacken

Tuesday, May 18, 2010

Windows7 Wake Up

In WIndows 7 kann man bei Tastatatur und Mäusen auch im Gerätemanger einstellen, ob sie das System aus dem Ruhezustand wecken dürfen, dies überschreibt die BIOS einstellungen.
POWERCFG -DEVICEQUERY wake_armed
werden alle Devices angezeigt, die das System aus dem Ruhezustand aufwecken können.
POWERCFG -lastwake
gibt den Grund für das letze Aufwachen an (auch im Ereignisprotokoll sichtbar)

Excel 2007 CSV importieren

In früheren Excel Versionen konnte man beim Datei öffnen den Textimport Assisenten benutzen - nun öffnet man einfach die Datei, markiert die Spalte mit den Werten die man aufteilen möchte, wählt im Daten Menü unter Datentools Text in Spalten und teit damit die Daten in mehrere Spalten auf

Friday, April 30, 2010

Ruhezustand: shutdown /h

muss mittels powercfg -h on akjtiviert sein

Tuesday, April 27, 2010

Remotedesktop Port ändern

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
Portnumber

Windows Server Kennwortrichtlinien, Anmelden als Dienst

Start/Verwaltung/Gruppenrichtlinienverwaltung (als DOmän Admin !)
default domänen policy rechte Maustzaste bearbeiten
ComputerKonfig/WindowsEinst/Sicherheitseinst/Kontorichtlinien

Start|Programme|Verwaltung|Lokale Sicherheitsrichtlinie
Lokale Sicherheitseinstellungen|Lokale Richtlinien "Zuweisung von Benutzerrechten" ,"Als Dienst anmelden".

Tuesday, April 20, 2010

for XML um strings einer unterabfrage zusammenzufügen

einfachste verwendung von for xml:
select * from sys.objects for Xml Auto
erezugt ein XML das für jede tabellenzeile ein xml element mit attributen für jede spalte enthält

select * from sys.objects for XML PATH('') erezugt für jede zeile ein set von xml elementen für jede spalte mit den spaltenwerten

select ','+ name from sys.objects for XML Path('')
enthält keine elemnte tags, da die spalte keinen namen hat, also nur einen , seperierten string als xml

select cast( (select ', '+lastname from [User] for Xml PATH('') ) as Varchar(MAX))
wandelt das ganze in einen string um

Reporting Services DateAdd

in Reporting Services wird die .NEt FUnktion Dateadd aufgerufen, nicht die gleichnamige TSQL Funktion, daher die DateInterval Enum verwenden statt einem String als Zeitintervall, z.b.:

=DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value)
oder auch mit String:
=DateAdd("d",-7, Today)

Wednesday, April 07, 2010

Windows 7 Ruhezustand

In Energioptionen, Erweiterte Eiunstellungen, Energiesparen, Hybridmodus zulassen "Nein"

Visual Studio Shortcuts

Visual Studio Shortcuts
shift F12 = Find all references,
CRT SHIFT Space = Intellisense Tooltip

Dataset Typ plötzlich unbekannt

manchmal erhält man bei der Arbeit mit typisierten Datasets die Meldung, dass eine typisierte Row nicht mehr bekannt ist. Dann hilft es, im Dataset xsd Designer eine test Tabelle hinzuzufügen, zu kompelieren und dann wieder zu lsöchen - scheinbar schaut der make Prozess nur aufs xsd File und nicht auf das designer.cs file.

Tuesday, April 06, 2010

Internet Explorer Suchanbieter hinzufügen

neben dem Suchfeld aufs Drop Down klicken, "Find More providers" auswählen => http://www.ieaddons.com/de/searchproviders wird geöffnet, dort ganz unten auf den Link "Erstellen Sie Ihren eigenen Suchanbieter" drücken => http://www.ieaddons.com/de/createsearch.aspx wird aufgerufen, dort die URL des Suchanbieters mit Suche nach TEST eingebn

Thursday, April 01, 2010

Erweiterte Partition unter Vista, Win7

Unter Computermanagement/Datenträgerverwaltung kann man ab Vista nur mehr ein einfaches Volume erstellen. Das Shell Tool Diskpart kann mittels
create partition extended eine erweiterte Partition erstellen:
1) Aufruf DISKPART von der Shell oder Ausführen, admin rechte vonnöten
2) mittels list disk die Datenträger auflisten
3) mittels SELECT DISK Nr die Disk auswählen, auf der man die erweiterte Partition erstellen will
4) Create Partition extended size= erzeugt eine erweiterte partition, wenn size nicht angegeben wird, wird der gesamte freie Platz verwendet

Thursday, March 18, 2010

Exception beim Debuggen direkt beim auslösenden Code abfangen

CRT ALT E öffnet Fenster zum EInstellen, welche Exceptions wo behandelt werden sollen. Beim Debuggen sind try catch Blöcke unagenehm, weil dort erst der Debugger halt macht. Mit Anhacken der spalte ausgeklöst (Thrown) im Exception Handler Fenster wird direkt beim Fehler gestoppt

Wednesday, March 17, 2010

typisiertes Dataset neu generieren

Wenn man in einem typisierten Dataset Felder hinzufügt oder dessen Eigenschaften ändert, wird öfters mal nicht der Code nue generiert oder es gibt Compiler Fehler beim neu generieren. Abhilfe: Dataset raus aus dem Projekt und wieder hinzufügen oder RunCustom Tool im Solution Explorer auswählen, dann wird der Code neu generiert

Tuesday, March 16, 2010

Windows7 Aktivierungsfehler

einfach denselben Productkey nochmals eingeben (Systemsteuerung / System / Windows aktivieren ganz unten)

Leerzeilen in Visual Studio löschen / Delete empty lines in Visual Studio (VS)

mittels regEx leerzeilen durch nichts ersetzen:
suchen nach: ^\n (sucht alle Leerzeilen (\n) am Anfang ^
ersetzen:
mit regEx

replace empty lines by nothing with regex:
search all new lines at beginning ^\n (=empty line)
replace:

Sunday, March 14, 2010

Documents and Settings in Windows 7

Seit Vista ist Document and Settings denied for everyone - in Security Deny für die Gruppe Everyone entfernen (in Advanced PropertiesI

Access: maximale Sperrungen Dateisätze überschritten

Lösung:
A) DAO.DBEngine.SetOption dbmaxlocksperfile,15000
B) Maxlocks in Registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0\MaxLocksperFile ändern

Thursday, March 11, 2010

Datarows zwischen Datatables kopieren

Wenn man versucht eine Datarow zu einer anderen Tabelle hinzuzufügen, erhält man die Fehlermeldung, dass diese Datarow eben schon zu einer Tabelle gehört.
Mit Datatable.Import läßt sich eine Datarow mit gleichem Inhalt erzeugen

Crystal Reports: Elemente unterdrücken (ausblenden) / hide elements

Um Elemente (z.b. Subreports) in einem Crystal Report auszublenden einfach im report designer mit rechter Maustaste auf den Subbericht klicken, Objekt formatieren wählen und eine Formel für die Eigenschaft unterdrücken angeben.

to hide elements (e.g. subreports) in crystall reports just click with right mouse key on the element, format object, formula for hide

Friday, March 05, 2010

Reporting Services: Übersschriften beim scrollen anzeigen

Property 'Fixed Header' der Report Tabelle auf 'true' setzen.

Thursday, February 11, 2010

.Net Resourcen

einfach in ein resx file bilder usw hinzufügen (drag & drop aus dem Explorer) es wird dann in ein resource file compeliert und zum assembly dazugelinkt

Tuesday, February 09, 2010

Activity Monitor Sql 2008

Der Activity Monitor ist beim Sql 2008 durch rechtsclick auf den Server im Management Studio zu erreichen, und nciht mehr wie bei SQL2005 unter Management

.Net Color zu Crystal Reports Farbe konvertieren

.Net speichert die Farbe Color als 4Bytes: ARGB
A ... Alpha Channel (durchsichtigkeit)
R Rot
G Grün
B Blau

Crystal Report erwartet die Farben in BGR (Blau Grün Rot).
Daher muss man den Alpha Teil wegschneiden und R sowie B vertauschen - z.b. in TSQL Scalar Value Funtion:

-- Create date: 09.09.2010
-- Description: Wandelt ARGB (Alpha Channel rgb von .Net Color.ToARGB() hat 4 Byte für RGBA, wobei Rot= 00ffff Grün=ff00ff und blau=ffff00 ist ) in RGB um
-- =============================================
ALTER FUNCTION [dbo].[fnArgb2Bgr]
(
@ARGB as int
)
RETURNS int
AS
BEGIN
DECLARE @BGR as int
DECLARE @R as int = (@ARGB & 0x00FF0000)/0x10000
DECLARE @G as int = (@ARGB & 0x0000FF00) /0x100
DECLARE @B as int = (@ARGB & 0x000000FF)

SET @BGR=@B*0x10000+@G*0x100+@R
--SET @RGB=(((-@ARGB) & 0x00FFffFF) ^ 0xFFffFF)
--SET @RGB=(((-@ARGB) / 256) ^ 16777215) -- shift um 8 bits => schneide niedrigstes byte (alpha channel) weg, dann invertieren der verbleibenden unteren 3 bytes [RGB] (16777215= 0xffFFff)
RETURN @BGR

END

Tuesday, February 02, 2010

Auslesen von Resourcen

1) Assmembly öffnen
2) aus dem Manifest enthaltenen Resourcen auslesen
3) für alle Resourcen des Assemblies mittels ResourceReader die einzelnen Resourceinträge lesen

Assembly a=Assembly.LoadFrom(@"E:\Anwendung.resources.dll");
foreach (string resourceName in a.GetManifestResourceNames())
{
// Opens a resource reader and gets an enumerator from it.
IResourceReader reader = new ResourceReader(a.GetManifestResourceStream(resourceName));
IDictionaryEnumerator en = reader.GetEnumerator();

while (en.MoveNext())
{
Console.WriteLine();
Console.WriteLine("Name: {0}", );
Console.WriteLine("Value: {0}", en.Value);
}
reader.Close();
}

string Array in Windows.Forms.Datagrid anzeigen

in ASP.Net muss man einem GridView einfach nur die Datasource auf ein String Array setzen, udn dies wird angezeigt. In Windows Forms wird dann lediglich die Length Property angezeigt, nicht aber die Strings selbst.
Abhilfe: konvertieren des string Arrays in einen LinQ Anaonymen Typen:

Beispiel: anzeigen der Resources eines Assemblies:
Assembly a=Assembly.LoadFrom(@"C:\Anwendung.resources.dll");
var x=a.GetManifestResourceNames().Select(item => new { bla = item}).ToList();
dg.DataSource = x;

Monday, January 25, 2010

Crytal Reports Formeln

VS2008: rechte Maustaste auf ein Feld, Format Object
z.b. Textfarbe aus Datenbank holen:
Reiter Font / Color auf Button x2 drücken. Es gibt zwei Syntaxe :
Basic: formular={sp_MBagTODO2.MaschineTypeColor}
Crytal Report: {sp_MBagTODO2.MaschineTypeColor}

wobei {Datasetfeldname} ist.

Thursday, January 21, 2010

Werte in Identity Spalte einfügen

Werte in Identity Spalte einfügen geht mit:
set IDENTITY_INSERT dbo.[User] on

Werte in Identity Spalte einfügen

Werte in Identity Spalte einfügen geht mit:
set IDENTITY_INSERT dbo.[User] on

Wednesday, January 20, 2010

access optionen / aktuelle Db / Dokumente im registerkartenformat

Um bei Access die Fenster im Registerkarten (Tab) Format anzuzeigen, muss man auf den Office Knopf drücken, access optionen / aktuelle Datenbank / Dokumentenfensteroptionen (relativv am Anfang der Seite, 4-5 Option) / Dokumente im registerkartenformat auswählen und Dokumentenregisterkarten anzeigen anhacken

Access & VBA: Kalenderwoche

Um die Kalenderwoche richtig darzustellen hat die Format Funktion zwei optionale Parameter firstdayofweek und firstweekofyear :
Format(expression [, format ] [, firstdayofweek ] [, firstweekofyear ] )

wobei firstdayofweek folgende werte enthalten kann:

vbUseSystem 0 Verwendet die NLS API-Einstellung.
VbSunday 1 Sonntag (Standard)
vbMonday 2 Montag
usw.

und firstweekofyear folgende werte enthalten kann:

vbUseSystem 0 Verwendet die NLS API-Einstellung.
vbFirstJan1 1 Beginnt mit der Woche, in die der 1. Januar fällt (Standard).
vbFirstFourDays 2 Beginnt mit der ersten Woche, die mindestens über vier Tage in dem Jahr verfügt.
vbFirstFullWeek 3 Beginnt mit der ersten vollen Woche des Jahres.

gewohntes deutsches Format ist daher:
=Format(Date();"ww";1;2)

siehe auch: http://office.microsoft.com/de-de/access/HA012288391031.aspx

Tuesday, January 19, 2010

Norton Ghost 2003 kann noch WIndows 7 ?

Norton Ghost 2003 kann im Gegensatz zu PowerQuest Drive Image 2002 noch die Partitionstabelle lesen und ein Image von einer Windows7 POartition machen - ob es auch Wiederherstellbar ist muss ich noch testen.
Bis jetzt habe ich keinen Weg gefunden ACronis DiskDirector von einem alten MSDOS (W98) zu starten, bei Ghost2003 genügt es die exe auf eine WHD mit W98DOs Startpartition zu kopieren - läuft einwandfrei

sql2005 - 2008 Kompatibilität

Sql2005 Backups können am SQL 2008 wiederhergestellt werden, umgekehrt jedoch nicht. Prinzipiell gilt: Aufwärts, aber nicht abwärtskompatibel.

Monday, January 18, 2010

Anwachsen Transaktionslog verhindern / Datensicherheit

Im Transaktionsprotokll werden alle Transaktionen (Insert / Update / Delete usw.) gespeichert, bevor die Daten in den Daten Files wirklich verändert werden (aus Performance und SIcherheitsgründen). Wenn das Recovery Modell SImple ist werden diese sofort nach eintrag in den Datenfiles als überschreibbar markiert, und bei Bedarf wieder überschrieben. Bei den anderen Recovery Modellen jedoch weren die Einträge erst nach einem LOG BACKUP (NICHT FULL BACKUP) als überschreibar markiert, um bei einem Fehlerhaften Daten File oder bei einem Irrtümlichen Löschvorgang usw. die Datenbank aus dem letzen FULL BACKUP und allen folgenden Transaction Log Backups sowie dem Transaction Log die Datenbank zu jedem beliebigen Zeitpunkt seit dem letzen FULL BACkup wiederhergestellt werden kann. Wird das Transakction Log nicht mittels LOG Backup weggesichert (dann werden die enthaltenen EInträge als überschreibbar markiert, ausgenommen die, die noch zu offenen Transaktionen gehören) wächst das Transaktion log immer weiter an, da die alten Einträge nciht überschrieben werden können.
Wird also ein anderes Recoverymodel als Simple verwendet, MUSS ein LOG BACKUP regelmäßig gemacht werden, um ein ANwachsen zu verhindert. Ist das ProtokollFile allerdingsschon angewachsen, kann nach einem Transaction Log Backup das Log File mit Shrink verkleinert werden (die saubere Variante, wenn es um die Erhaltung der Wiederherstellung zu jedem beliebigen Zeitpüunkt geht).

Wichtig für erfolgreiches Sichern einer Datenbank:
1) Sofort nach Anlage der Datenbank Recovery Modell auf FULL stellen und ein FULL BACKUP machen.
2) regelmäßige Log Backups
3) in größeren Abständen FULL BACKUPS machen, unmittelbar davor aber ein LOG BACKUP machen, um auch die Zustände zwischem letzen LOG BAckup und Full Backup wiederherstellen zu können

nach dem 1.LogBackup  eventuell ein Shrink durchführen:


USE [dbname]
GO
DBCC SHRINKFILE (N'logfilename logisch' , 1000)
GO

oder im ssms unter Datenbank, Task, Verkleinern, File, Logfile

Windows VPN Verbindung & und Zugriff aufs lokale Netzwerk

Default Maessig wird beim Verbinden über eine Windows VPN Verbindung das Remote Standard Gateway verwendet, d.h. alle Netzwerkanfragen werden nicht mehr über das StandardGateway der lokalen LAN Verbindung geroutet sondern über das Standardgateway des Netzes, in das man sich mit VPN verbindet. Dies kann über VPN Eigenschaften / Networking / Internet Protokoll v4 / Eigenschaften -> Advanced / Use Default Gateway on remote network geändert werden.

Friday, January 15, 2010

Virtual PC Save State

Beim Virtuellen PC 2007 kann man beim schließen des Fensters auswählen, ob man den Computer abdrehen oder den Staus speichern möchte und so gleich weiterarbeiten kann beim wiedereinschalten.

Thursday, January 14, 2010

EMail Benachrichtigung für SQLAgentJob / Wartungsplan

Jedem Wartungsplan ist ein SQLAgentJob zugeordnet. Es genügt leider nciht, beim Wartungsplan EMAilBenachrichtigung im Fenster Protokollierung anzuhacken (Button in 1. Zeile des Wartungsplans). Mann muss zuerst Datenbank Mail konfigurieren (siehe früherer Post) und dann den SQL Agent für EMail Versand konfigurieren:
SqlAgent/eigenschaften -> Warnsystem / Mailsitzung
SqlAgent/neustarten
und dann im zum Wartungsplan gehörenden Job einstellen wer in welchem Fall benachrichtigt wird:
SqlAgent/Aufträge -> Notifikation

Job testen und im DatenbankMail Protokoll auf Fehlermeldungen überprüfen

SqlServer Wartungspläne für Backup

FullBackup (z.b. wöchetnlich oder monatlich)
1) Danenbnakintegrität überprüfen (Check Database Integry)
2) History Cleanup
3) RebuildIndex / Reorgainze Index
4) UpdateStatistics (nihct notwendig bei Index Rebuild, dieser erstellt automatisch neue Statistiken)
5) Backup DB: LOG zuerst (sonst kann man den Zeitraum vorm full backup bis zum letzen Log Backup nicht wiederherstellen)
6) TSQL Befehl ausführen: exec xp_cmdshell 'D:\SQLDATA\Backup\Automatenverwaltung\Automatenverwaltung.bat' zum umbennenen der Dateien
7) Backup DB: FULL

LogBackup (z.b. täglich, halbtäglich ...)
1) Check Db Integry Task
2) Backup Log

Im Wiederherstellungsfall, immer zuerst ein LogBackup des aktuellen Transactionlogs machen (dmait man auch die neuersten Transaktionen Wiederherstellen kann) und die DB offline schalten bzw. detachen. Wichtig: Stellt man bei einem DB Backup Task die Sicherungsart (Full / Differentiell oder Log um, muss man die Datenbanken und das Backupfile erneut aussuchen / angeben)

Dos Kommandos mittels TSQL: xp_cmdshell

Wenn man aus einem TSQL Script am SQL Server Betiebsystembefehle ausführen möchte, geht das mit der Stored Procedure xp_cmdshell, die man aber zuerst freischalten muss (da sie ein Sicherheitsrisiko darstellt):

Auf master datenbank als sysadmin ausführen:
EXEC master.dbo.sp_configure 'show advanced options', 1

RECONFIGURE

EXEC master.dbo.sp_configure 'xp_cmdshell', 1

RECONFIGURE

Exec xp_cmdShell ‘dir *.*’

wenn dann blogspot.com und blogger.com vertrauenswürdig

hat man nur blogspot.com als vertrauenswürdig gesetzt, und blogger.com nciht, bekommt man probleme beim anmelden unter win7/ie8.

Monday, January 11, 2010

Sql2005 / 2008 & Compact

Wenn man am SQL2005 eine Compact Datei erzeuigt, so wird sie vom 2008er (SqlCompactCe3.5) konvertiert.

exe (Programme) ins Startmenü einbinden

Um Programme im Startmenü anzeigbar zu machen, einfach das Programm kopieren und eine Verknüpfung in Windows/Starmenü/Programme erstellen

Windows 7 Suche Explorer

Im Explorer Dateien bestimmter Groesse suchen: size:>500kb size:<800kb AND Verknüpfung, einfach in das Search Feld eingeben

Sunday, January 10, 2010

active sync und sdf dateien (compact sql server ce)

Eine CompactSqlServerCe Datei wird mittels Active Sync syncronisiert, auch bei laufender Anwendung am mobile für diese db, man muss sich aber nach jedem sync am host neu mit dem sqlserver management studio auf die gesyncte sdf datei verbinden, um die änderungen zu sehen (sql server ce 3.5 winMobile 6.1 windows 7, sqlserver 2008 studio)

Saturday, January 09, 2010

Dataset TableAdapter

Beim Erzeugen eines typisierten Datasets durch Drag & drop der Tabellen ins xsd File werden zusätzlich zu den DataTables sogenannte Tableadapter generiert. Wichtig ist dass die tabelle einen Primary Key hat, sonst können keine Update / Delete Commandos für die DataAdapter der TableAdapter erezugt werden (geht auch mit commandbuilder nicht).
wenn Primary key fehlt hinzufügen mittels:
alter table Zeit add constraint TasksPK PRIMARY KEY (GUID)

mit AddQuery aus dem Contextmenü kann man weitere Abfragen, Sps hinzufügen um weitere FillBy... Methoden zu generieren, um z.b. bestimmte Parameter an Fill Sps zu übergeben

errormessages / Fehlermeldungen Windows Mobile NETCFv35.Messages.DE.wm.cab

Um Fehlermeldungen am Windows mobile 6 anzuzeigen muss NETCFv35.Messages.DE.wm.cab installiert werden - download - kopieren aufs mobile, dort ausfuehren

to display errormessages on windows mobile 6 you have to install NETCFv35.Messages.DE.wm.cab (copy to mobile and execute there)

Friday, January 08, 2010

SQLServerCompact

SQLServerCompact speichert Datenbanken in sdf Dateien. Unter Win7 64bit erhielt ich den Fehler "unable to oad DLL sqlceme35.dll" , ausserdem wird beim kopieren einer sdf Datei eine neue Datenbank angelegt, anstatt den Inhalt mitzukopieren. Die SDF Dateein können übers SqlManagement Studio (Connect SqlServer Compact) oder das Visual Studio gewartet werden. Schema und Daten einer SQL Server Datenbank am besten mt Merge Replikation übertragen, eine SQLCompactDatei als Linked Server einzubinden ist mir nicht gelungen, umgekehrt gibt es diesen Punkt nicht. Mit VS2008 kann man die Daten editieren.

Zugriff auf eine sdf Datei aus c#:

SqlCeConnection con = new SqlCeConnection("Data Source=|DataDirectory|\\TodoList.sdf");
con.Open();
SqlCeCommand com = new SqlCeCommand("Select count(*) from Tasks", con);
object o =com.ExecuteScalar();
SqlCeDataAdapter da = new SqlCeDataAdapter("Select * from Tasks", con);
DataTable dt = new DataTable();
da.Fill(dt);

oder reinziehen der Tabellen aus dem Server Explorer in ein typisiertes Dataset (xsd), dann werden auch gleich die entsprechenden Table Adapter erstellt.