Tuesday, October 22, 2013

my sql basiscs / mysql Grundlagen

# kommentar / comment
# immer mit ; abschließen, sonst können keine Teilabfragen ausgeführt werden

select * from mytable limt 100; # gibt max 100 Sätze zurück / max 100 Records returned
select @@version; #version von mysql anzeigen


curdate() # aktuelles Datum


show status; # alle variablen / all variables
show processlist;
show open tables;

show engine innodb status; # benötig superuserrechte /  requires superuser rights 


SqlServer2008 - SqlCompact MergeReplikation

Um eine Db eines SQL Servers 2008/2005 zu replizieren ist es wichtig sich mit dem Rechnernamen, nicht mit der IP anzumelden, sonst glaub ssms dass die Replikation nicht installeirt ist.
Anschließend:
1) neue Publikation unter Server
2) neue Subscription

wichtig: bei den Properties der Publikation das Verfallsdatum (expire) von Subscription richtig konfigurieren, sonst verfallen diese bei seltener  Merge Replikation (Standard 14 Tage)

Reporting Services Email Abonnement

Vorraussetzungen:
1) Ein Email Account muss in Reporting Services Configuration definiert sein
2) Ausführungs Account sollte definiert sein

Abonnement hinzufügen:
Über http://Reportserver/Reports zum Bericht navigieren, unter Eigenschaften, Abonnements neues Abonnement auswählen

Monday, October 21, 2013

reporting services anwendungskonto ändern / change reporting services user

Reporting Services Übersicht:

Reportmanager (bsp.: http://localhost/Reports) Webanwendung greift auf
Reportserver (bsp.: http://localhost/Reportserver) Webanwendung zu, diese auf
Sql Server Reporting Services Windows Service zu, dieses geht dann mit dem unter Berichtserverkonfig/SetupDatenbank definierten Konto auf die Reportserver Datenbank,
diese ist mit einem Schlüssel verschlüsselt, den sollte man sichern um im folgenden Fehlerfall wiederherstellen zu können:
Der Berichtsserver kann den symmetrischen Schlüssel nicht entschlüsseln, der zum Zugreifen auf sensible oder verschlüsselte Daten in einer Berichtsserver-Datenbank verwendet wird. Sie müssen entweder einen Sicherungsschlüssel wiederherstellen oder den gesamten verschlüsselten Inhalt löschen. Weitere Informationen finden Sie in der Dokumentation. (rsReportServerDisabled) (rsRPCError) Onlinehilfe
Ungültige Daten (Ausnahme von HRESULT: 0x80090005)


Wednesday, October 16, 2013

neues Team Projekt anlegen in Vs 2012 / new team project in Visual Studio 2012

its a little bid hidden: in Team Explorer at the right side on top, under the search glass there is a drop down 0> Projects / New Team Project.

In Vs2012 ist das Menü zum Anlegen neuer Team Projekte etwas versteckt: Im Team Explorer, rechts oben unter der Suchlupe ist ein Drop Down welches Zugriff aufs Projects Menü erlaubt.

Vl Build, Debug / Checked Build

Vl = Volume License Build
Debug / Checked Build: With Trace Infos and Debug possibilities - only for developper

sql server dynamic managment objects (views) categories / Kategorien

dm_exec_
dm_os_
dm_tran_
dm_io_
dm_db_

Tuesday, October 15, 2013

batch file to set / show oracle sid - batch datei um oracle sid zu setzen / auszulesen

sid.bat:

if X%1X==XX goto weiter
set oracle_sid=%1
:weiter
set oracle_sid

use it to set sid: sid mydb
to get actual sid: sid

verwenden um sid zu setzen: sid mydb
um auszulesen: sid

expdp / impdp example

example to export and import schemas from oracle db sourcedb to destdb - the dumpfile is stored by default in C:\app\Administrator\admin\sourcedb\dpdump
Beispiel um schemas von oracle datenbank sourcedb zu destdb - das dumpfile wird defaultmäßig in C:\app\Administrator\admin\sourcedb\dpdump gespeichert

set oracle_sid=sourcedb
expdp 'sys/Pwd as sysdba' schemas=a,b dumpfile=mydump.DMP
copy mydump.dmp ..\..\destdb\dpdump
set oracle_sid=destdb
impdp schemas=a,b dumpfile=mydump.DMP

Windows Server 2008 Service Pack 2: IIS AppPool\DefaultAppPool

After deploying Windows Server 2008 Service Pack 2 (SP2) some Web Applications might stop worink due to lack of permissions - in w2003 server the app pool default account was networkService , now it's 
IIS AppPool\DefaultAppPool, and you have to set the filesystem rights to this user properly, to get your app running. In the File System Security Dialog Box, you have to select the local machine and then enter "IIS AppPool\DefaultAppPool", because its a virtual account (see http://www.iis.net/learn/manage/configuring-security/application-pool-identities)
you can see wath account is running your AppPool under taskmanager / show all processes or in IIS Manager, Advanced Seetings of the app pool.

Nach dem einspielen von Service Pack 2 (SP2) auf Windows Server 2008 (w2008) oder Windows Vista könnten manche Web Applikationen nicht mehr richtig laufen aufgrund zu geringer  Berechtigungen. Früher (bei w2003s z.b) wurde der Default App Pool unter dem Netzwerkdienst ausgeführt, nun wird er standardmäßig unter "IIS AppPool\DefaultAppPool" ausgeführt. Daher muß dieser Account auch die entsprechenden File System Rechte auf die Files der Anwendung haben - also in den File System Rechten den User "IIS AppPool\DefaultAppPool" des lokalen Rechners hinzufügen.
UNter taskmanager / Prozesse aller Benutzer anzeigen bzw. im IIS Manager unter Advanced Settings kann man sehen, unter welchem Benutzer ein App Pool ausgeführt wird.

l

Saturday, October 12, 2013

winform localization problem / Windows Forms Lokalisierungs Problem

I hade a User Control, where I set Localizable=True and switched from Language=Default to Language=English, and put the english translation into all my german labels. Then I switched back to Default Language, and all the translations remained there, I had lost all my default german labels. Finaly I found the reason: The Winform Code Generator had an error (...the value 0 is not valid for the property ...): it tried to set a enum property of a sub user control  to 0, which didn't work. As result, it stopped generating an english resource file (usercontolname.en.resx). So I decorated the Enum property with a Default Attrivute:
[DefaultValue(myenum.forWinFormGenerator)]
and everything worked fine. Conclusion: If there is a code generation error in WinForm, localisation will not work.

Ein Usercotrol machte probleme beim Lokalisieren: Als ich Localizable=True einstellte und von der Default Language zu Englisch wechselte, mein Übersetzungen für die Labels eingab und wieder zurückwechselte auf die Default Language, waren all meine deutschen Labels weg, und es blieben die englischen Übersetzungen stehen. Ursache war ein Code Generations Fehler: Der WinForm Code Generator versuchte einem Enum Property eines Sub User Controls den Wert 0 zuzuweisen - und brach dann die weitere Generation ab, generierte also auch kein Englisches Resource File (usercontolname.en.resx), sondern schrieb die Übersetzungen ins Default resx über die deutschen Labels.
Lösung: Ich vergab ein DefaultValue Attribut für die enum Eigenschaft des Sub User Controls, und der Code generator areitete fehlerfrei:
[DefaultValue(myenum.fueWinFormGenerator)]

Thursday, October 10, 2013

VBA Write to Textfile - VBA in Text File schreiben


    Open "log.txt" For Output As 2
    Write #1, "Hallo !"
    Close 2

Friday, October 04, 2013

sql profiler trace of table adapter (typed dataset) vs2008, sql server 2008r2

used test table definition on SqlServer2008r2 / verwendete Test Tabellen Definition auf sql2008r2:

USE [test]
GO

/****** Object:  Table [dbo].[tTest]    Script Date: 10/04/2013 09:38:06 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tTest](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL
) ON [PRIMARY]

GO

created a table adpater by drag and drop the table from server explorer into an empty dataset / erzeugete mittels drag and Drop vom Server Explorer in ein leeres Dataset einen TabellenAdapter

created a winform and drag and drop the table adapter into it => creating a datagridview
ein windows form erzeugt und den Table Adapter hineingezogen => ein Datagridview erzeugt

 1) insert first row by entering name "test" and click save=>
exec sp_executesql N'INSERT INTO [dbo].[tTest] ([name]) VALUES (@name)',N'@name nvarchar(4)',@name=N'test'

2)insert second row "Test2"  and click save=>
 exec sp_executesql N'INSERT INTO [dbo].[tTest] ([name]) VALUES (@name)',N'@name nvarchar(5)',@name=N'test2'

--added primary key to table to get update command & delete command into Table Adapter
Primärschlüssel hinzugefügt um Update und Delete Command beim Table Adapter hinzuzufügen

3) update first row from "Test" to "Test1":
exec sp_executesql N'UPDATE [dbo].[tTest] SET [name] = @name WHERE (([id] = @Original_id) AND ((@IsNull_name = 1 AND [name] IS NULL) OR ([name] = @Original_name)));
SELECT id, name FROM tTest WHERE (id = @id)',N'@name nvarchar(5),@Original_id int,@IsNull_name int,@Original_name nvarchar(4),@id int',@name=N'test1',@Original_id=1,@IsNull_name=0,@Original_name=N'test',@id=1


4) insert row 3:
exec sp_executesql N'INSERT INTO [dbo].[tTest] ([name]) VALUES (@name);
SELECT id, name FROM tTest WHERE (id = SCOPE_IDENTITY())',N'@name nvarchar(5)',@name=N'test3'

Wednesday, October 02, 2013

script for copy a sql server database / Skript zum Kopieren einer Sql Server Datenbank

quell Datenbank Name=x1, Ziel Datenbank Name=x2
source database name =x1, dest database name=x2

select 'backup'  --echo wath I'm doing
go backup database x1 to disk ='D:\BAK\x1.bak' --full backup
go
USE master
go
select 'DropCon'
go
ALTER DATABASE x2 SET OFFLINE WITH ROLLBACK IMMEDIATE --cut all existing connections
go
ALTER DATABASE mydb SET ONLINE WITH ROLLBACK IMMEDIATE --connect again
go
DROP DATABASE mydb --drop to remove mdf and ldf file to create same named files with 
go
select 'restore'  --echo wath I'm doing
go

--get filelist of logical files in restore file, maybe they differ fropm x1 and x1_log
RESTORE FILELISTONLY from disk = 'd:\temp\x.bak'



restore database x2  from disk ='D:\BAK\x1.bak' with file=1,
move 'x1' to 'D:\sqldata\x2_Data.MDF',
move 'x1_Log'  to 'D:\sqldata\x2_Log.LDF'
go


use osql on sql server 2000 or sqlcmd 2005 and later to execute from commandline:
osql:


d:
cd D:\sqldata

osql -U username -P password -i script.sql

Friday, September 27, 2013

oracle basics 2

--Tables and columns
select * from user_Tables;
select * from user_tab_columns;

rownumber / rownr: rownum;

select rownum as rownumber, ID from test;

simplest block:

set serveroutput on;
BEGIN
  DBMS_OUTPUT.put_line ('Hello World!');
END;

verwendung von variablen:

set serveroutput on;
DECLARE MyString VARCHAR2(100); --vorm block deklarieren
BEGIN
  MyString := 'Hello World 2';
  DBMS_OUTPUT.put_line (MyString);
END;

--variable aus select heraus befüllen
set serveroutput on;
DECLARE MyString VARCHAR2(100);
BEGIN
  select 'Hello World 3' into MyString from dual;
  DBMS_OUTPUT.put_line (MyString);
END;

Friday, September 20, 2013

stored procedure to create command line for merge pull subbscription - zum erzeugen der Command Line für Merge Pull Subscription

create PROCEDURE mergeCom
(
@SubscriptionDB as varchar(max)='subsdb'
,@Publication as varchar(max) ='pub'
)
AS
BEGIN
--exec mergecom
-- Declare the variables.
declare @Publisher as varchar(max);
declare @Subscriber as varchar(max);
declare @PublicationDB as varchar(max);

select @Publisher=s.publisher,@subscriber=s.subscriber,@PublicationDB=s.publisher_db
from distribution.dbo.MSmerge_subscriptions s
join distribution.dbo.mspublications  p on s.publication_id=p.publication_id
where s.subscriber_db=@SubscriptionDB and p.publication=@Publication

--Start the Merge Agent with concurrent upload and download processes.
-- The following command must be supplied without line breaks.
--2008 C:\Program Files (x86)\Microsoft SQL Server\100\COM>
--'C:\Program Files\Microsoft SQL Server\110\COM\
declare @com as varchar(max)='REPLMERG.EXE -Publication '+@Publication
set @com=@com +' -Publisher '+@Publisher+' -Subscriber '+@Subscriber +' -Distributor '+@Publisher
set @com=@com +' -PublisherDB '+@PublicationDB+' -SubscriberDB '+@SubscriptionDB
---DistributorSecurityMode 1  -PublisherSecurityMode 1 -- use for windows authentication, default=0=sql server auth
set @com=@com +' -OutputVerboseLevel 2  -SubscriberSecurityModc5e 1  -SubscriptionType 1  -Validate 3  -ParallelUploadDownload 1'
set @com=@com +' -DistributorLogin sa -DistributorPassword Pa$$w0rd -PublisherLogin sa -PublisherPassword Pa$$w0rd'
Print @com
END

Thursday, September 19, 2013

simple transaction rollback example - einfaches transaktions rollback beispiel

select * from tMergeUni
begin transaction
select * from tMergeUni
update tMergeUni set Name='free2' where Uni='5DADE228-7EAC-4C4D-A6FF-A078733DA68B'
select * from tMergeUni
rollback
select * from tMergeUni

Monday, September 09, 2013

Sql Server Through /durch Windows Friewall

If you have default port 1433 for SQL Server, you have to create an inbound and outbound Rule to enable remote connections to it. Times ago it was enough to create an inbound role.

Um den default Port 1433 des Sql Servers nach außen zu öffnen, muß man einen inbound und eine outbound Regel in der WIndows Firewall anlegen - früher genügte eine Inbound Rule.

Sql Server Agent Jobs

Query to view Sql Server Agent Jobs - Abfrage um Sql Server Agent Jobs anzuzeigen:

SELECT
    [sJOB].[job_id] AS [JobID]
    , [sJOB].[name] AS [JobName]
    , [sDBP].[name] AS [JobOwner]
    , [sCAT].[name] AS [JobCategory]
    , [sJOB].[description] AS [JobDescription]
    , CASE [sJOB].[enabled]
        WHEN 1 THEN 'Yes'
        WHEN 0 THEN 'No'
      END AS [IsEnabled]
    , [sJOB].[date_created] AS [JobCreatedOn]
    , [sJOB].[date_modified] AS [JobLastModifiedOn]
    , [sSVR].[name] AS [OriginatingServerName]
    , [sJSTP].[step_id] AS [JobStartStepNo]
    , [sJSTP].[step_name] AS [JobStartStepName]
    , CASE
        WHEN [sSCH].[schedule_uid] IS NULL THEN 'No'
        ELSE 'Yes'
      END AS [IsScheduled]
    , [sSCH].[schedule_uid] AS [JobScheduleID]
    , [sSCH].[name] AS [JobScheduleName]
    , CASE [sJOB].[delete_level]
        WHEN 0 THEN 'Never'
        WHEN 1 THEN 'On Success'
        WHEN 2 THEN 'On Failure'
        WHEN 3 THEN 'On Completion'
      END AS [JobDeletionCriterion]
FROM
    [msdb].[dbo].[sysjobs] AS [sJOB]
    LEFT JOIN [msdb].[sys].[servers] AS [sSVR]
        ON [sJOB].[originating_server_id] = [sSVR].[server_id]
    LEFT JOIN [msdb].[dbo].[syscategories] AS [sCAT]
        ON [sJOB].[category_id] = [sCAT].[category_id]
    LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sJSTP]
        ON [sJOB].[job_id] = [sJSTP].[job_id]
        AND [sJOB].[start_step_id] = [sJSTP].[step_id]
    LEFT JOIN [msdb].[sys].[database_principals] AS [sDBP]
        ON [sJOB].[owner_sid] = [sDBP].[sid]
    LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [sJOBSCH]
        ON [sJOB].[job_id] = [sJOBSCH].[job_id]
    LEFT JOIN [msdb].[dbo].[sysschedules] AS [sSCH]
        ON [sJOBSCH].[schedule_id] = [sSCH].[schedule_id]
ORDER BY JobCreatedOn desc

Ms Sql Server: Merge Replikation / Replication


1) Publikation
Beim Hinzufügen von Artikeln muß nacher ein neuer Snapshot gemacht werden, damit diese Repliziert werden können

2) Subscription
der Subscriber darf keine höhere sql server Version als der Verleger haben ! - subscriber version has to be lower than publicator
erzeugt einen Sql Agent job Namens
PublikationsServer - Publikationsdatenbank - SubscriberServer - Nr
wobei Nr hochgezählt wird.
creates a Sql Server Agent Job with this name:
publicationServer - PublicationDatabase - SubscriberServer - Nr
Nr is counted

2a) Push Subscription

2b) Pull Subscription
Merge Agent:
Bei Sql Server 2008: C:\Program Files (x86)\Microsoft SQL Server\100\COM\replmerger.exe

Tuesday, September 03, 2013

Allgemeines zur Sql Server Replikation

Die Replikations Assistenten prüfen (zumindest bei Sql 2008) nciht, ob die eingegeben Account Informationen passen, es kommt erst während der Ausführung des Scripts oder der Replikation selbst zu einem Fehler.

Transactionale Replikation:

Zunächst wird mit einem SQLAgentJob ein Snapshot angelegt, und zwar macht das der Raplikationsagent, also das Windows Konto das beim Einrichten des Publishers angegeben wurde. wichtig: dieser Agent braucht schreibrechte auf der Freigabe, die zum Speichern des Snapshots verwendet wird - dort wird ein unc Directory angelegt und darin wieder eines mit dem Publikationsnamen, darin werden die Files gepeichert. INsgesamt werden 3 SqlAgent Jobs verwendet:
pubserver-db-Publication-Nr snapshot.exe zum erstellen des SNapshots
pubserver-db-Nr logreader.exe (liest das Transactionlog der Publikations Datenbank)
pubserver-db-db-subsrv-db-uniq distrib.exe für die subscribtion

Der Replikationsmonitor zeigt den Status aller Publikationen auf einen Blick und auch gleich die History der betroffenen SqlAgentJobs.

stnadard befehl des transaction log reader jobs:
logread -Publisher [KKMCON01] -PublisherDB [TASE] -Distributor [SQLSRV] -DistributorSecurityMode 1 -Continuous

logread.exe ist z.b. in c:\Program Files\Microsoft SQL Server\100\COM

Berechtigungen: siehe http://technet.microsoft.com/de-de/library/ms151868(v=sql.105).aspx

Agent
Berechtigungen
Momentaufnahme-Agent
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich:
  • Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.
  • Es muss über Lese-, Schreib und Änderungsberechtigungen für die Momentaufnahmefreigabe verfügen.
Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.
Protokolllese-Agent
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.
Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.
Verteilungs-Agent für Pushabonnements
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich:
  • Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.
  • Es muss Mitglied der Veröffentlichungszugriffsliste sein.
  • Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.
  • Es muss über die Leseberechtigung für das Installationsverzeichnis des OLE DB-Anbieters für den Abonnenten verfügen, wenn das Abonnement für einen Nicht-SQL Server-Abonnenten vorgesehen ist.
Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest ein Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein oder über vergleichbare Berechtigungen verfügen, wenn das Abonnement für einen Nicht-SQL Server-Abonnenten vorgesehen ist.
Verteilungs-Agent für Pullabonnements
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.
Für das zum Herstellen der Verbindung mit dem Verteiler verwendete Konto ist Folgendes erforderlich:
  • Es muss Mitglied der Veröffentlichungszugriffsliste sein.
  • Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.
Merge-Agent für Pushabonnements
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verleger und dem Verteiler herstellt. Für dieses Konto ist Folgendes erforderlich:
  • Es muss mindestens Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.
  • Es muss Mitglied der Veröffentlichungszugriffsliste sein.
  • Die Anmeldung muss mit einem Benutzer in der Veröffentlichungsdatenbank verknüpft sein.
  • Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.
Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.
Merge-Agent für Pullabonnements
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Abonnenten herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.
Für das zum Herstellen der Verbindung mit dem Verleger und Verteiler verwendete Konto ist Folgendes erforderlich:
  • Es muss Mitglied der Veröffentlichungszugriffsliste sein.
  • Die Anmeldung muss mit einem Benutzer in der Veröffentlichungsdatenbank verknüpft sein.
  • Die Anmeldung muss mit einem Benutzer in der Verteilungsdatenbank verknüpft sein. Der Benutzer kann der Guest-Benutzer sein.
  • Es muss über Leseberechtigungen für die Momentaufnahmefreigabe verfügen.
Warteschlangenlese-Agent
Das Windows-Konto, unter dem der Agent ausgeführt wird, wird verwendet, wenn er Verbindungen mit dem Verteiler herstellt. Dieses Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank sein.
Das zum Herstellen der Verbindung mit dem Verleger verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Veröffentlichungsdatenbank sein.
Das zum Herstellen der Verbindung mit dem Abonnenten verwendete Konto muss zumindest Mitglied der festen Datenbankrolle db_owner in der Abonnementdatenbank sein.


Monday, September 02, 2013

function to get date from parts / Funktion um Datum aus Jahr/Monat/Tag zu erhalten in ms sql server 2008 and 2005

-- Description: like DateFromParts in sql server 2012
-- =============================================
ALTER FUNCTION [dbo].[MyDateFromParts]
(
@year int,
@month int,
@day int
)
RETURNS Datetime --nvarchar(20)--
AS
BEGIN
-- Declare the return variable here
declare @dateString as nvarchar(20) = convert(nvarchar(4),@year)+ dbo.AddLeading0(@month) +dbo.AddLeading0(@day)--dbo.AddLeading0(@year)--+
DECLARE @ret as DateTime=Convert(datetime, @dateString)

RETURN @ret

END

--depends on

-- Description: adds leading 0 if x in 0-9
-- =============================================
ALTER FUNCTION [dbo].[AddLeading0]
(
@x int
)
RETURNS Nvarchar(2)
AS
BEGIN
-- Declare the return variable here
DECLARE @ret as nvarchar(2) = convert(nvarchar(2),@x)
if (2>len(@ret)) set @ret='0'+@ret
RETURN @ret

END

einfache/simple tsql table value function to split strings / Tabellenwertfunktion um Strings zu splitten

-- most simple table value function / allereinfachste Tabellenwertfunktion
CREATE FUNCTION fRmaNr
(

)
RETURNS @tRmaNr TABLE (rmaNr nvarchar(16))
AS
BEGIN
insert into @tRmaNr values (1)
insert into @tRmaNr values (2)
RETURN
END

-- stringsplit
CREATE FUNCTION [t].[Split]
(
    @sString nvarchar(2048),
    @cDelimiter nchar(1)
)
RETURNS @tParts TABLE ( part nvarchar(2048) collate Latin1_General_CI_AS_KS_WS )
AS
BEGIN
    if @sString is null return
    declare     @iStart int,
                @iPos int
    if substring( @sString, 1, 1 ) = @cDelimiter
    begin
        set     @iStart = 2
        insert into @tParts
        values( null )
    end
    else
        set     @iStart = 1
    while 1=1
    begin
        set     @iPos = charindex( @cDelimiter, @sString, @iStart )
        if @iPos = 0
                set     @iPos = len( @sString )+1
        if @iPos - @iStart > 0                
                insert into @tParts
                values  ( substring( @sString, @iStart, @iPos-@iStart ))
        else
                insert into @tParts
                values( null )
        set     @iStart = @iPos+1
        if @iStart > len( @sString )
                break
    end
    RETURN

END

Monday, August 26, 2013

Click Once en-us en-US download problem (.net)

beim publizieren einer click once app trat folgender fehler auf:
when publishing a click once app, I got this eror:

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of C:\Users\hewmic\Desktop\Footscanner12.appref-ms| resulted in exception. Following failure messages were detected:
+ Downloading http://www.shaolinqigong.at/zBootdoc/Application Files/BootDoc_WPF_1_2_2013_0821/en-us/BootDoc_WPF.resources.dll.deploy did not succeed.
+ The remote server returned an error: (404) Not Found.

der directory name am web server war großgeschrieben: en-US, geändert auf Kleinschreibung en-us brachte denselben fehler nur dass en-US nicht gefunden werden konnte - scheinbar wird sowohl klein als auch großgeschrieben benötigt.
Workaround: zwei Directories en-us und en-US mit demselben Inhalt angelegt

the directory name on the webserver was uppercase: en-US. So I changed to lowercase, but got the same error, saying the uppercase dir is missing.
Workaround: two dirs with same content en-us and en-US


Tuesday, August 06, 2013

Tableadapter.Fill Constraint Exception: delete and create new - am einfachsten löschen und neu anlegen



to find out which row and which field causes the exception, enable editing in debug mode and press F10, so the debugger goes to the next command, and then display the dataset in a winform datagridview => the causes of exception have a red exclamation mark.
if a Tableadapter.Fill Contraint Exception occurs once and you try to fill again (by using the Debugger) and there is no exception on the second try, then its most likely a primary key problem of the dataset. Its strange, that the  second fill doen't create an exception too.
if nothing works, delete and create new one

um herauszufinden, welche Zeile und welches feld die Exception verursacht, ist es nützlich, das dataset in einem datagridview anzuzeigen - rote rufzeichen markieren die fehlerursache. einfach mit dem debugger nach der exception im Fill Command weitersteppen und das dataset in einem windows form datagridview anzeigen.
wenn beim Aufruf einer Tableadapter Fill Operation eine Contraint Exception auftritt, und man mittels des Debuggers nochmal füllt, und es funktioniert, dann handelt es sich höchstwahrscheinlich um eine Primary Key Verletzung des Datasets.
Wenn das alles nichts hilft, löschen und neu anlegen

Thursday, August 01, 2013

Sql Server Update, Insert Trigger Example / Beispiel



CREATE TRIGGER [dbo].[myTrigger]
   ON  [dbo].[myTable]
   AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

    -- Insert statements for trigger here
IF ((SELECT [val_bool] FROM sf_Configuration WHERE name=''debug'') =  1)
BEGIN
DECLARE @Id UniqueiDENTIFIER, @DEBUG_DESCRIPTION VARCHAR(256), @TLD_VALUE int
DECLARE curInserted CURSOR LOCAL
FOR SELECT Id, debug_description, tld_value FROM Inserted
OPEN curInserted
FETCH NEXT FROM curInserted INTO @Id, @DEBUG_DESCRIPTION, @TLD_VALUE
WHILE (@@FETCH_STATUS=0)
BEGIN
   PRINT ''updating debug info''
            UPDATE [sf_GroupSecurity] SET DEBUG_DESCRIPTION=(
select text from sf_TranslationData
where sf_TranslationData.id=@TLD_VALUE and language_id=
(SELECT [val_string] FROM sf_Configuration WHERE name=''debug_lang''))
WHERE [id]=@Id
            FETCH NEXT FROM curInserted INTO @Id, @DEBUG_DESCRIPTION, @TLD_VALUE
END
END
END

Thursday, July 25, 2013

telerik Radgrid Insert / Edit Button Hide

Hide Insert Button:

z.b. in selecting Event of radgrid:
gvPrefSupCalc.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = false;


Hide Editbutton :


      protected void radGrid_OnItemDataBound(object sender, GridItemEventArgs e)
        {
            GridItem curItem = e.Item;

            if (curItem.ItemType == GridItemType.Item || curItem.ItemType == GridItemType.AlternatingItem)
            {
               
                bool editButtonVisible=null!=curItem.DataItem; //or convert Dataitem to your rowtype and add other conditions
   
                LinkButton btnDeleteItem = curItem.FindControl("btnDeleteItem") as LinkButton;
                if (btnDeleteItem != null)
                {
                    btnDeleteItem.Visible = editButtonVisible;
                }
                ImageButton btnEdit = curItem.FindControl("EditButton") as ImageButton;  
                if (btnEdit != null)
                {
                    btnEdit.Visible = editButtonVisible;
                }

            }
        }

asp.net: Finding Controls rekursiv - Controls rekursiv suchen

asp.net c#:


        public void FindImageButton(ControlCollection cc)
        {
            foreach (Control c in cc)
            {
                ImageButton ib=c as ImageButton;
                if (null!=ib)
                {
                    string s= ib.ID;
                }
                LinkButton lb = c as LinkButton;
                if (null != lb)
                {
                    string s = lb.ID;
                }
                Button b = c as Button;
                if (null != b)
                {
                    string s = b.ID;
                }
                FindImageButton(c.Controls);
            }
        }

Monday, July 01, 2013

Mulivalue Parameter + "In" Filter

to filter a SSRS (Sql Server Reporting Services) dataset with the In Clause and a Multivalueparameter (e.g. named  DocIds) enter [@DocIds] in the Value Box of the Filter (Dataset Properties) and the Operator In.
[@DocIds] is like Expression =Parameters!DocIds.Value - it offers all values of the multivalue Parameter, not only one like Parameters!DocIds.Value(0)


um ein SSRS (Sql Server Reporting Services) Dataset mit der In Klausel und einem Multivalue Parameter (z.b. Namens DocID) zu filtern, muß man  [@DocIds] in der Value Textbox und den Operator "In" im Dialogfeld "Filters" der Dataset Properties einstellen.
[@DocIds] entspricht der Expression =Parameters!DocIds.Value - das gibt alle Werte des Multivalue Parameters zurück und nciht nur einen wie z.b. Parameters!DocIds.Value(0)

Thursday, June 13, 2013

Expression Date Examples for SSRS (Sql Server Reporting Services) / Datums Ausdrücke

z.b. in Parameteern:
=DateDiff("yyyy",Now(),"1/1/2010") diff in years (Jahre)

=DateDiff("d",Now(),"1/1/2010")  Diff in days (Tage)

=DateAdd("d",-2,Now())

Saturday, March 02, 2013

retrieving Database Identity Colum Values (e.g. Autoincrement) from SqlServer


Use the "OUTPUT inserted.*" Clause on the Insert Command:
INSERT INTO [dbo].[Spiele] ([Name], [C], [L]) OUTPUT inserted.*  VALUES (@Name, @C, @L)
check by Debugging the taSpiele.Adapter.InsertCommand.CommandText before calling taSpiel.Update to ensure the OUTPUT Clause is there. You can add the OUTPUT inserted.* clause in the Dataset Designer on the Table Adpater Properties Page InsertCommand


Nutze die  "OUTPUT inserted.*" Klausel für den Insert Command:
INSERT INTO [dbo].[Spiele] ([Name], [C], [L]) OUTPUT inserted.*  VALUES (@Name, @C, @L)
sicherheitshalber mittels Debugger überprüfen ob taSpiele.Adapter.InsertCommand.CommandText auch tatsächlcih die OUPUT Klausel enthält  vor dem Aufruf  taSpiel.Update.
Die  OUTPUT inserted.* Klausel kann z.b. mit dem  Dataset Designer bei den  Table Adpater Properties Page InsertCommand hinzugefügt werden

Tuesday, February 26, 2013

TFS UNDO Changes from other workspace

tf undo /workspace:OtherUserWorkspace;OtherUser  $/Project/ItemName.cs /s:http://yourtfsserver:8080

Friday, February 15, 2013

Recht als Service anmelden / right to log on as service


siehe /look at
http://technet.microsoft.com/en-us/library/cc739424(v=ws.10).aspx:





Add the Log on as a service right to an account

25 out of 36 rated this helpful Rate this topic
Updated: August 22, 2005
Applies To: Windows Server 2003 R2

Add the Log on as a service right to an account

To add the "Log on as a service" right to an account on your local computer

  1. Open Local Security Policy.
  2. In the console tree, double-click Local Policies, and then click User Rights Assignments.
  3. In the details pane, double-click Log on as a service.
  4. Click Add User or Group, and then add the appropriate account to the list of accounts that possess the Log on as a service right.

To add the "Log on as a service" right to an account for a Group Policy object, when you are on a workstation or server that is joined to a domain

  1. Click Start, point to Run, type mmc, and then click OK.
  2. On the File menu, click Add/Remove Snap-in.
  3. In Add/Remove Snap-in, click Add, and then, in Add Standalone Snap-in, double-click Group Policy Object Editor.
  4. In Select Group Policy Object, click Browse, browse to the Group Policy object (GPO) that you want to modify, click OK, and then click Finish.
  5. Click Close, and then click OK.
  6. In the console tree, click User Rights Assignment.
    Where?
    • GroupPolicyObject [ComputerName] Policy
    • Computer Configuration
    • Windows Settings
    • Security Settings
    • Local Policies
    • User Rights Assignment
  7. In the details pane, double-click Log on as a service.
  8. If the security setting has not yet been defined, select the Define these policy settings check box.
  9. Click Add User or Group, and then add the appropriate account to the list of accounts that possess the Log on as a service right.

To add the "Log on as a service" right to an account for a Group Policy object, when you are on a domain controller or on a computer that has the Windows Server 2003 Administration Tools Pack installed

  1. Open Active Directory Users and Computers.
  2. In the console tree, right-click the domain or organizational unit (OU) for which you want to edit security settings.
  3. Click Properties, and then click the Group Policy tab.
  4. In Group Policy Object Links, click the Group Policy object for the domain or OU for which you want to edit security settings, and then click Edit.
  5. In the console tree, click User Rights Assignment.
    Where?
    • GroupPolicyObject [ComputerName] Policy
    • Computer Configuration
    • Windows Settings
    • Security Settings
    • Local Policies
    • User Rights Assignment
  6. Double-click Log on as a service in the details pane.
  7. If this security setting has not yet been defined, select the Define these policy settings check box.
  8. Click Add User or Group, and then add the appropriate account to the list of accounts that possess the Log on as a service right.

To add the "Log on as a service" right to an account for only domain controllers, when you are on a domain controller

  1. Open Domain Controller Security Policy.
  2. In the console tree, click User Rights Assignment.
    Where?
    • Security Settings
    • Local Policies
    • User Rights Assignment
  3. In the details pane, double-click Log on as a service.
  4. If this security setting has not yet been defined, select the Define these policy settings check box.
  5. Click Add User or Group, and then add the appropriate account to the list of accounts that possess the Log on as a service right.
Notes
  • To open Local Security Policy, click Start, point to Control Panel, point to Administrative Tools, and then double-click Local Security Policy.
  • To open Domain Controller Security Policy, click Start, point to All Programs, point to Administrative Tools, and then click Domain Controller Security Policy.
  • When you change a security setting, that setting will take effect in the next refresh of settings.
  • The security settings are refreshed every 90 minutes on a workstation or server and every 5 minutes on a domain controller. The settings are also refreshed every 16 hours, whether or not there are any changes.

Wednesday, February 13, 2013

Sql Profiler: Tracefilesize

Die tracefilegröße hängt von den getracten spalten ab - je mehr desto größer, z.b. bei sql batch completed beträgt die tracefilegröße in byte:

Zeilen 2cols allcols
1 1148 1618
10 1715 5071
bytes/zeile 56,7 345,3



tracefilesize depends on count of traced columns - more columns, bigger file, filezize in bytes see above

Wednesday, January 23, 2013

simple binding wpf listbox to datatable by code / einfaches binden einer wpf listbox an eine datatable mittels code


xaml: add Listbox and Loaded:
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        Loaded="Window_Loaded">
           


CodeBehind:
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            SqlConnection sqlCon = new SqlConnection("server=192.168.1.231; database=hewmicTest;Trusted_Connection=True");
            sqlCon.Open();
            SqlDataAdapter sqlDa = new SqlDataAdapter("select * from testTable", sqlCon);
            DataTable dt = new DataTable();
            sqlDa.Fill(dt);
            lb.ItemsSource = dt.Rows;
            lb.DisplayMemberPath = "ItemArray[1]";
            sqlCon.Close();
            //MessageBox.Show("ConnState=" + sqlCon.State);
        }

Monday, January 21, 2013

tabellenzugriff mittel sql server audit überwachen


ab sql2008, im ssms unter security (server und database)


USE master ;
GO
-- Create the server audit.
CREATE SERVER AUDIT hewMicSqlServerAuditTest TO APPLICATION_LOG ; -- windows application log
--alternative: TO FILE  (FILEPATH ='c:\temp\' );
GO
-- Enable the server audit.
ALTER SERVER AUDIT hewMicSqlServerAuditTest WITH (STATE = ON) ;
GO
-- Move to the target database.
USE hewmicTest ;
GO
-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION testSpec FOR SERVER AUDIT hewMicSqlServerAuditTest
ADD (SELECT , INSERT ON dbo.testTable BY dbo )
WITH (STATE = ON) ;
GO

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