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
meine Sys/Db admin & Developper Notitzen - wer Rechtschreibfehler findet darf sie behalten ... my Sys/Db Admin and developper notes - I don't care about typos
Tuesday, October 22, 2013
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:
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:
| |||||||||
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.
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
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_
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
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
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
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)]
[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'
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
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;
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
(
@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
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.
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
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
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:
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:
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:
|
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:
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:
|
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
-- =============================================
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
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
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
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.
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;
}
}
}
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);
}
}
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)
[@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
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
- Open Local Security Policy.
- In the console tree, double-click Local Policies, and then click User Rights Assignments.
- In the details pane, double-click Log on as a service.
- 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
- Click Start, point to Run, type mmc, and then click OK.
- On the File menu, click Add/Remove Snap-in.
- In Add/Remove Snap-in, click Add, and then, in Add Standalone Snap-in, double-click Group Policy Object Editor.
- 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.
- Click Close, and then click OK.
- In the console tree, click User Rights Assignment.Where?
- GroupPolicyObject [ComputerName] Policy
- Computer Configuration
- Windows Settings
- Security Settings
- Local Policies
- User Rights Assignment
- In the details pane, double-click Log on as a service.
- If the security setting has not yet been defined, select the Define these policy settings check box.
- 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
- Open Active Directory Users and Computers.
- In the console tree, right-click the domain or organizational unit (OU) for which you want to edit security settings.
- Click Properties, and then click the Group Policy tab.
- 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.
- In the console tree, click User Rights Assignment.Where?
- GroupPolicyObject [ComputerName] Policy
- Computer Configuration
- Windows Settings
- Security Settings
- Local Policies
- User Rights Assignment
- Double-click Log on as a service in the details pane.
- If this security setting has not yet been defined, select the Define these policy settings check box.
- 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
- Open Domain Controller Security Policy.
- In the console tree, click User Rights Assignment.Where?
- Security Settings
- Local Policies
- User Rights Assignment
- In the details pane, double-click Log on as a service.
- If this security setting has not yet been defined, select the Define these policy settings check box.
- 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:
tracefilesize depends on count of traced columns - more columns, bigger file, filezize in bytes see above
| 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: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
else
EnvCd:='X';
End if;
RETURN EnvCd;
END;
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();
}
}
}
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
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
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;
}
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
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
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.Attachments.Add('c:\bat\report.txt')
#Sending email
$smtp.Send($msg)
Write-Host "Email Sent"
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
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
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
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
Windows7 Aktivierungsfehler / Activation
einfach denselben Productkey nochmals eingeben (Systemsteuerung / System / Windows aktivieren ganz unten)
renter the same product key (system / activate windows)
renter the same product key (system / activate windows)
Windows 7 Ruhezustand
In Energioptionen, Erweiterte Eiunstellungen, Energiesparen, Hybridmodus zulassen "Nein"
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 sever | oracle |
|---|---|
| IsNull(feld,NullErsetzWert) | NVL(Fld,NullReplWert) |
| select * into dest from source | create dest as select * from source |
| select top 10 * from x | select * from x where rownum<=10 |
c#<->vb.net
| c# | vb.net |
|---|---|
| using namespace | imports namespace |
| string s="Hallo" | dim s as String="Hallo" |
| this | me |
| And, or kurzschluss auswertung | andalso, 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';
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';
Thursday, August 11, 2011
asp.net Apps tracen
in der Web.config im Abschnitt system.web folgenden xml Tag (spitze Klammern hinzu)
trace enabled="true" pageOutput="true" requestLimit="20" traceMode="SortByTime" localOnly="true"
einfügen, an jeder Seite sollte nun ein Trace Abschnitt angehängt werden, eine Übersicht über alle Traces bekommt man indem man im hauptdir der Anwendung
trace.axd
aufruft (die gibt es physikalisch nicht, wird aber von asp.net für jede Anwendung bereitgestellt)
Monday, August 08, 2011
check sql agent running with tsql
if 0<(select count(*) from sysprocesses where program_name like 'SQLAgent%')
begin
print 'sql agent is running'
end
else
begin
print 'sql agent is not running'
end
begin
print 'sql agent is running'
end
else
begin
print 'sql agent is not running'
end
Friday, August 05, 2011
Datagridview auf Bindingsource an Datatable
Ereignisreihenfolge beim Hinzufügen einer neuen Zeile:
1) Bindingsource_ADddingNEw
2) Datatable_TableNewRow
3) Datagridview_UserAddedRow
wenn jemand im Datagridview auf die neue Zeile klickt, wird nicht unbedingt schon eine neue Row hinzugefügt, erst wenn jemand verscuht einen Wert einzutragen => mit Bindingsource.AddNEw() kann man händisch eine neue Row hinzufügen
1) Bindingsource_ADddingNEw
2) Datatable_TableNewRow
3) Datagridview_UserAddedRow
wenn jemand im Datagridview auf die neue Zeile klickt, wird nicht unbedingt schon eine neue Row hinzugefügt, erst wenn jemand verscuht einen Wert einzutragen => mit Bindingsource.AddNEw() kann man händisch eine neue Row hinzufügen
Subscribe to:
Posts (Atom)