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;