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