Wednesday, December 05, 2012

simple oracle function


gibt wert aus tabelle t_settings zurück
Warum abfrage auf count ? wenn   select VALUE Into EnvCd  FROM t_settings WHERE KEY='ENV_CD'; keinen Datensatz zurückleifert bricht die Funktion ab und leifert null zurück ...


create or replace
   Function GetEnvCode
     RETURN CHAR
    IS
      EnvCd CHAR(1):='Z';
      anz number:=0;
    BEGIN
      select count(*) INTO anz FROM t_settings WHERE KEY='ENV_CD';
      if (0        select VALUE Into EnvCd  FROM t_settings WHERE KEY='ENV_CD';
      else
        EnvCd:='X';
      End if;
      RETURN EnvCd;
    END;



testen mit:

select GetEnvCd from dual;

Monday, November 12, 2012

WCF Service Host without app.config (configuration by code) example

using System;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;


namespace wcf3
{
    class Program
    {
        static void Main(string[] args)
        {

            ServiceHost serviceHost = new ServiceHost(typeof(TestService), new Uri("http://localhost:80/Test3"));

            // Create Meta Behavior
            ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
            behavior.HttpGetEnabled = true;

            serviceHost.Description.Behaviors.Add(behavior);

            Binding mexBinding = MetadataExchangeBindings.CreateMexHttpBinding();

            serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), mexBinding, "mex");

            WSHttpBinding httpBinding = new WSHttpBinding(SecurityMode.None);

            serviceHost.AddServiceEndpoint(typeof(ITestService), httpBinding, "rest");

            serviceHost.Open();
            Console.WriteLine("TestService is now running. at: " + serviceHost.BaseAddresses.First());
            Console.WriteLine("Press any key to stop it ...");
            Console.ReadKey();
            serviceHost.Close();
        }
    }

    [ServiceContract]
    public interface ITestService
    {
        [OperationContract]
        string Test(string input);
    }

    public class TestService : ITestService
    {

        public string Test(string input)
        {
            return input + DateTime.Now.ToString();
        }
    }



}

WCF Basics

1) Visual Stuido: WCF Service Projekt anlegen (=Server) :
Erzeugt ein .svc File, in dem der ServiceHost deklariert wird, der dann das eigentlcihe Service , die Klasse Service 1 im .svc.cs, die wiederum das Interface IService1 implementiert. GetData ist die Beispielmethode.0

1a) Klasse ServiceContract mit Methoden OperationCopntracts
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: Add your service operations here
    }

2a) CLient anlegen:  z.b. WinForm oder WPF oder CMD Line  Projekt - oder mitgeliefreten WcfTestClient.exe verwenden (im Projekt wird bei Debug Command Line Arguments  /client:"WcfTestClient.exe" hinzugefügt bei einer WCF Class LIbrary - zu finden in C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE)
2b) Service Reference hinzufügen, Discover und OK drücken und ServiceReference1 wird erzeugt
2c) In einem Button Click einen Client erzeugen und auf dem GetData aufrufen:


        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
            string s=client.GetData(10);
            MessageBox.Show("returns: " + s);
        }

weitere Info:
http://www.michis-blog.net/wp-content/uploads/2007/05/wcf-tutorial.pdf
http://www.codeproject.com/Articles/97204/Implementing-a-Basic-Hello-World-WCF-Service
https://weblogs.asp.net/ralfw/a-truely-simple-example-to-get-started-with-wcf


3) Error Handling

ServiceHost only supports class service types

maybe the interface was specified instead of the implementation in the .svc file

WCF Basics

1) Visual Stuido: WCF Service Projekt anlegen (=Server) :
Erzeugt ein .svc File, in dem der ServiceHost deklariert wird, der dann das eigentlcihe Service , die Klasse Service 1 im .svc.cs, die wiederum das Interface IService1 implementiert. GetData ist die Beispielmethode.0

1a) Klasse ServiceContract mit Methoden OperationCopntracts
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: Add your service operations here
    }

2a) CLient anlegen:  z.b. WinForm oder WPF oder CMD Line  Projekt - oder mitgeliefreten WcfTestClient.exe verwenden (im Projekt wird bei Debug Command Line Arguments  /client:"WcfTestClient.exe" hinzugefügt bei einer WCF Class LIbrary - zu finden in C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE)
2b) Service Reference hinzufügen, Discover und OK drücken und ServiceReference1 wird erzeugt
2c) In einem Button Click einen Client erzeugen und auf dem GetData aufrufen:


        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
            string s=client.GetData(10);
            MessageBox.Show("returns: " + s);
        }

weitere Info:
http://www.michis-blog.net/wp-content/uploads/2007/05/wcf-tutorial.pdf
http://www.codeproject.com/Articles/97204/Implementing-a-Basic-Hello-World-WCF-Service
https://weblogs.asp.net/ralfw/a-truely-simple-example-to-get-started-with-wcf


3) Error Handling

ServiceHost only supports class service types

maybe the interface was specified instead of the implementation in the .svc file

Friday, November 09, 2012

WPF Databinding: über DataContext

z.b.:

im Xaml:

IsEnabled="{Binding Source={StaticResource DataContextBridge}, Path=DataContext.Model.IsLocked}"

im CodeBehind:


        public void Initialize(ImportExportViewModel model, IUnityContainer unityContainer)
        {
            ((FrameworkElement)Resources["DataContextBridge"]).DataContext = DataContext;
DataContext = yourDatModel;
        }

Wednesday, November 07, 2012

oracle simple stored procedure


create or replace
PROCEDURE TESTHM AS
BEGIN
--set serveroutput on;
  --does not work: SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
  dbms_output.put_line ('TestHm');
  --does not work: ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
  dbms_output.put_line (CURRENT_DATE);
END TESTHM;

testen:
set serveroutput on;      
execute testhm;

mit Parameter:
create or replace

PROCEDURE TESTHM
(
     InTest   IN  VARCHAR2
)
IS
BEGIN
--set serveroutput on;
  dbms_output.put_line ('TestHm Begin');
  dbms_output.put_line (InTest);
END TESTHM;




set serveroutput on;  
execute testhm('Hallo');

Monday, November 05, 2012

oracle enterprisemanger urls

sind in C:\oracle\product\10.2.0\db_1\install\readme.txt

Wednesday, October 24, 2012

batch file pruefen ob parameter uebergeben wurde


@echo off
echo start
if X%1X==XX goto ende
echo commandozeilen parameter 1 wurde uebergeben
:ende
echo ende

Monday, October 22, 2012

Oracle Bildschirmausgabe basics (if, dbms_output)


prompt 'bildschirmausgabe in sql scripts - in stored Proc dbms_output.put_line verwenden'
-- damit  dbms_output.put_line('Bildschrimasugabe in PL SQL Blocks (Stored Proc.)'); funktioniert
set serveroutput on;
begin
  dbms_output.put_line('Bildschrimasugabe in PL SQL Blocks (Stored Proc.)');
  if (1=0) THEN
    dbms_output.put_line('true');
    else
    dbms_output.put_line('false');
  end if;
end;

Tuesday, October 16, 2012

refresh / recompile sql server Inline table valued Functions / Tabellenwert Funktionen aktualisieren

select  'exec sp_refreshsqlmodule '+name  from sys.objects where type='IF'  and schema_id=1

ergebnis kopieren und ausführen

type="IF" Inline Function

Monday, October 15, 2012

powershelll erste schritte

in powershell ausführung von unsigned scripts zulaassen:
Set-ExecutionPolicy RemoteSigned

powershell e:\SendMail.ps1

e:\SendMail.ps1:

#gwmi win32_operatingsystem

 Write-Host "Sending Email"

 #SMTP server name
 $smtpServer = "mail.server.com"
 $cred = new-object Net.NetworkCredential("user", "pwd!")

 #Creating a Mail object
 $msg = new-object Net.Mail.MailMessage

 #Creating SMTP server object
 $smtp = new-object Net.Mail.SmtpClient($smtpServer)


 $smtp.Credentials = $cred


 #Email structure
 $msg.From = "x@y.z"
 $msg.ReplyTo = "x@y.z"
 $msg.To.Add("x@y.z")
 $msg.subject = "test"

 $msg.IsBodyHTML = $true

 $msg.body ="
------------       Backup:       ---------------------"
 $msg.body += Get-Content e:\backuplog.txt

 $msg.Attachments.Add('c:\bat\report.txt')

 #Sending email
 $smtp.Send($msg)

 Write-Host "Email Sent"

Friday, October 05, 2012

Oracle Nationalen Zeichensatz (Collation) ändern:


Der NLS Nationale Zeichensatzin Oracle, den man beim Erzeugen der Db angibt kann wie folg ausgelesen werden:

SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE 'NLS_NCHAR_CHAR%';

und so geändert werden (nicht supported):

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
SHUTDOWN IMMEDIATE;

bzw ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

Wednesday, September 05, 2012

Oracle Basics

Db connectionstrings stehen am server in: C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora Sqlplus verbindet sich immer zu der db, die in Umgebungsvariable ORACLE_SID steht, außer man verwendet diesen syntax: sqlplus "sys/password@dbFromTns as sysdba" test abfrage: select table_Name from user_tables;

Tuesday, August 28, 2012

Oracle imp / impdp

impdp (ab oracle 10g)
wichtig - dumpfile muß im directory C:\oracle\product\10.2.0\admin\DATABASENAME\dpdump liegen und ORACLE_SID Umgebungsvariable auf die Db, in die importiert werden soll zeigen

C:\oracle\product\10.2.0\admin\LDLDeploy\dpdump>impdp dumpfile=PSA20120515.DMP Import: Release 10.2.0.1.0 - Production on Monday, 27 August, 2012 14:33:00 Copyright (c) 2003, 2005, Oracle. All rights reserved. Username: sys as sysdba Password: Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SYS"."SYS_IMPORT_FULL_01": sys/******** AS SYSDBA dumpfile=P20120515.DMP Processing object type SCHEMA_EXPORT/USER

welche schemas sind im dmp file ?
mit notepad++ oder ähnlichem öffnen und nach  OWNER_NAME  suchen

imp (vor oracle10g, wird aber bei 10 und 11 auch noch mitgeliefert)
der user steht in der 2. zeile des dumps ab Zeichen 2 (1. Zeichen ist D):


TEXPORT:V09.02.00
DUSER
RTABLES

Sunday, August 26, 2012

Windows 8 Product Key ändern

In Systemsteuerung / System / Windows Activation gibt es nicht wie bei Windows 7 die Möglichkeit den product key zu ändern, aber mittels vb scrip von einer administrativen sell ist es möglich: slmgr.vbs -ipk "neuer Product Key"

Thursday, August 23, 2012

Tabellen Speicherplatz: sp_spaceused

exec sp_spaceused tLog exec sp_spaceused tLog1 exec sp_spaceused tAdressen

Wednesday, August 22, 2012

Sql Server Page Dump

dbcc traceon(3604) dbcc IND(Datenbank,Tabelle,-1) dbcc PAGE(datenbank,FileId,PagePID,3) -- FileId =1 PagePID von dbcc IND

Tuesday, August 07, 2012

from SqlServer to Oracle

sql database servcie default port 1433 - oracle listener def. port 1521 lassen sich mit telnet hostname port verifizieren ob sie laufen Der Listener wird mit Net Configuration Assistent konfiguriert, der Aministrations Assistent von Windows zeigt an welche Listener und admins es gibt Datenbanken werden mit dem Database Configuration Assistent angelegt In C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN ist das tnsnames.ora und andere config files

WSS Wiki aus dem SQL Server

Wollte mal wissen, wo die Wiki Einträge am Sharepoint in der dahinterliegenden SQL Server Datenbank abgelegt werden:

Wiki ist Liste von HTML Seiten, [[WikiSeitenname]] wird auf Link
<a class=ms-wikilink href="/myWiki/Home.aspx">Home</a> umgewandelt

und werden in CONTEN_Portal abgelegt:
select ui.tp_login,du.tp_Dirname,du.tp_leafname,du.tp_version,du.tp_author,du.ntext2, du.tp_created,du.tp_editor,du.Tp_modified,*
from AllUserData du join UserInfo ui on du.tp_editor=ui.tp_id
where tp_contenttype like 'Wiki%'
order by du.tp_leafname,du.tp_version

weitere Sql Queries auf die Sharepoint Content Db

Visual Studio Shortcuts

CRTL SHIFT SPACE ... Intellisense Tooltip für aktuellen Parameter

Windows7 Aktivierungsfehler / Activation

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

renter the same product key (system / activate windows)

Windows 7 Ruhezustand

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

Ruhezustand: shutdown /h

muss mittels powercfg -h on akjtiviert sein

Macros for Build Commands and Properties

Im Visual Studio, Projekteigenschaften, Build Events sind folgende Markeos nützlich (Variablen für diverse Pfade, Directories und Files): Macros for Build Commands and Properties z.b. $(ProjectDir) $(SolutionDir) leider lassen sich diese nicht im Working Directory unter Debug verwenden ...

Monday, July 30, 2012

The name 'components' is already used by another object

Windows Forms Designer Fehlermeldung: The name 'components' is already used by another object Ursache: doppelte Zeile this.components = new System.ComponentModel.Container(); in private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container(); einfach löschen dann gehts wieder

Sunday, July 22, 2012

windows form textbox.text threadsicher setzten

/// used To set Text Box Threadsave (Invoked by this MoneyManagerForm) /// /// Textbox to set text /// text is set to Textbox private delegate void DelegateSetTbText(TextBox tb, string s); /// threadsave set of Text of Textbox /// /// Text of this Textbox is set /// new text for textbox private void SetText(TextBox tb, string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.InvokeRequired) { DelegateSetTbText d = new DelegateSetTbText(SetText); this.Invoke(d, new object[] { tb, text }); } else { tb.Text = text; tb.Enabled = true; } }

Monday, July 16, 2012

Fehler HRESULT 0x8007052E

Bei Reporting Services trat nach Passwortänderung des WindowsDienst- und Execution Kontos folgender Fehler auf: Fehler bei der Berichtsverarbeitung. (rsProcessingAborted) Der Berichtsserver-Windows-Dienst 'ReportServer' wird nicht ausgeführt. Dieser Dienst muss ausgeführt werden, damit der Berichtsserver verwendet werden kann. (rsReportServerServiceUnavailable) => Aktualisierung des Paswortes des WIndows Dienst SqlServer Reporting Services und start des Dienstes hatte zum Erfolg, dass der Reportmanager wieder bedienbar war (Navigation durch die Ordner, Eigenschaften von Berichten änderun usw. ging wieder) aber beim Ausführen des Reports trat folgender Fehler auf: Fehler bei der Anmeldung. (rsLogonFailed) Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort. (Ausnahme von HRESULT: 0x8007052E) dieser konnte durch aktualisierung mit dem neuen Passwort im Konfigurationmanager unter Ausführungskonto (ganz unten links) behoben werden

Monday, July 09, 2012

sql reporting services slow startup

Der erste Aufruf von Reporting Services ist meist sehr langsam, weil die Seite inwzischen recyceld wurde. Man kann das Recycle Intervall verlängern, sodass bei wenig frequentierten Berichtsservern trotzdem ein schneller Respond erfolgt: In C:\Programme\Microsoft SQL Server\MSRS10.CRM\Reporting Services\ReportServer\rsreportserver.config 72000 von 720 erhöhen

Wednesday, July 04, 2012

sql server logins dbuser connection

Auf Sql Server Ebene gibt es Logins (die auch einer WIndows Gruppe, einem WIndowws User zugeordnet sein können) - auf Datenbankebene gibt es die DAtenbank Rollen und Benutzer. Damit ein Login auf eine Datenbank Zugreifen kann muß es mit einem Datenbankuser dort verbunden sein. Über das SSMS kann bei den Eigenschaften des SqlServerLogins unter Usermapping ein Login mit einer Datenbank verbunden werden, indem dort ein DbUser mit demselben Namen wie das sqlserverLogin erzeugt wird. Gibt es diesen User schon, erfolgt ein Fehler und man muß den User und das Login mittels der Stored Procedure sp_change_users_login verbinden: z.b. exec sp_change_users_login 'Auto_Fix','DbUserName' exec sp_change_users_login 'Report' listet die unverbundenen DB User auf. Um festzustellen welcehr Dbuser mit welchem Login verbunden ist: select u.name as dbusername,l.name as loginname from sys.sysusers u join sys.syslogins l on l.sid=u.sid

Tuesday, July 03, 2012

typed Dataset Contrain Exception

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. Unfortunatly, there is no hint which Constraint(s) causes the exeption => try 1) set Allwo DBNull to true 2) Length of String ok ? (Set to max) 3) double key ? or try to load same rowset into a untyped dataset and copy each row and each field into the typed one

Friday, June 22, 2012

Click Once empty Error Message

if you try running Setup from Click Once and an empty errorbox appears, delete the suo file of your solution and publish again

Click Once Prerequisites

Click Once Prerequisites are located in C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages there you can add your own packeges

Tuesday, June 12, 2012

Auto Update Statistics Async

Beim Synchronen Update, werden sobald der Query Optimizer das Erignis Statistiken veraltert wirft, dieseaktualisiert und erst danach die Query ausgeführt. Beim Asynchronen AutoUpdate wird die Query noch mit den veralterten Stat. Ausgeführt, im Hintergrund aber ein Task zum Updaten derselben gestartet, und wenn dieser fertig sit, werden alle Queries mit den neuen Statistiken geliefert.

Thursday, May 31, 2012

Click Once adding files to publish / missing .confing.deploy

1) to add Files for publishing: every File in Project with Property Build Action Content is added 2) app.config -> app.config.deploy but the setup says missing *.exe.config.deploy => add a *.exe.config file and the Pubsliher makes a .deploy from it

Friday, May 25, 2012

regex in Vs und SSMS

Im Visual Studio oder im Sql Management Studio (SSMS) muß man statt den normalen regex quantifiers {n} ^n verwenden

Friday, April 13, 2012

oracle psql <-> sqlserver tsql

sql sever - oracle

sql severoracle
IsNull(feld,NullErsetzWert)NVL(Fld,NullReplWert)
select * into dest from sourcecreate dest as select * from source
select top 10 * from xselect * from x where rownum<=10

c#<->vb.net







c#vb.net
using namespaceimports namespace
string s="Hallo" dim s as String="Hallo"
thisme
And, or kurzschluss auswertungandalso, orelse

Wednesday, January 25, 2012

Trigger on all server

alter TRIGGER [trgDatabaseCreated]
ON ALL SERVER
with execute as 'sa'
FOR CREATE_DATABASE

AS
declare @data XML
declare @message XML

SET @data=EVENTDATA()



declare @msg as nvarchar(max)
set @msg = 'Databasecreated' + @data.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(100)') + @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(2000)')

INSERT INTO [InterneVerwaltung].[dbo].[AllgLog] ([name],[description],xmldesc)
VALUES ('trgDatabaseCreated',@msg,@data)

--INSERT INTO InterneVerwaltung.dbo.AllgLog
--(DB_User,Event,TSQL)
--VALUES
--(GETDATE(),
--CONVERT(nvarchar(100),CURRENT_USER),
--@data.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(100)'),
--@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(2000)'))

exec msdb.dbo.sysmail_start_sp

Execute msdb.dbo.sp_send_dbmail
@profile_name='sqlcl1DbMail',
@recipients='erich.geierlehner@ecs.steyr.com',
@subject='databasewascreated',
@body=@msg,
@query='select top 1 * from [InterneVerwaltung].[dbo].[AllgLog] with (NOLOCK) order by created DESC';