asp.net identity hat auf sql server ein einfacheres schema als der membership provider und erzeugt die Tabellen selbst wenn sie erstmals benötigt werden (Create Table Recht vorausgesetzt), wenn nicht vorhanden, man braucht also kein asp.net config tool. funktioniert out of the box
asp.net identity has a more simple schema on sql server than membership rpovider and creates the tables, if necesary (needs create table privileg) - don't need asp.net config tool anymore
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
Saturday, December 28, 2013
Monday, December 23, 2013
how to query grace periode days left of terminal services / Abfrage der verbleibenden gratis Tage von Remote Desktop Services
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL GetGracePeriodDays
C:\Windows\system32>wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="")
CALL GetGracePeriodDays
Executing (\\myserver\root\CIMV2\TerminalServices:Win32_TerminalServiceSetting.ServerName="BRIL_INT")->GetGracePeriodDay
s()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
DaysLeft = 74;
ReturnValue = 0;
};
C:\Windows\system32>wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="")
CALL GetGracePeriodDays
Executing (\\myserver\root\CIMV2\TerminalServices:Win32_TerminalServiceSetting.ServerName="BRIL_INT")->GetGracePeriodDay
s()
Method execution successful.
Out Parameters:
instance of __PARAMETERS
{
DaysLeft = 74;
ReturnValue = 0;
};
Wednesday, December 18, 2013
dIRECTORY MIT vba AUSLESEN - READ DIRECTORY IN vba
Dim FileName
FileName = FileSystem.Dir("C:\")
While ("" <> FileName)
Debug.Print FileName
FileName = FileSystem.Dir() 'Read next entry by passing no params
Wend
FileName = FileSystem.Dir("C:\")
While ("" <> FileName)
Debug.Print FileName
FileName = FileSystem.Dir() 'Read next entry by passing no params
Wend
Saturday, December 14, 2013
windows 8 phone entwicklung einstieg
1) Hardware vorraussetzungen:
64 bit Rechner + Windwos Phone 8 ODER Rechner kann HyperV +SLAT
2) Software
64bit Betriebsystem
VS2013 inkl. Windows phone sdk
3) Veröffentlichen:
3a) Screenshot:
Screenshot mittels Phone Emulator in größte Auflösung (WXPA) machen (im Menü beim x), die niedrigeren Auflösungen werden dann beim upload berechnet. Achtung: Ausschalten der Framerate vorher, sollte im Release Build ausgeschalten sein, hat bei mir aber nicht geklappt daher mit #if DEBUG entfernt im App.xaml.cs:
// Show graphics profiling information while debugging.
if (Debugger.IsAttached)
{
// Display the current frame rate counters.
#if DEBUG
Application.Current.Host.Settings.EnableFrameRateCounter = true;
#endif
3b) Icons:
Unter Assets/Tiles alle Default Icons ersetzen durch eigene ...
64 bit Rechner + Windwos Phone 8 ODER Rechner kann HyperV +SLAT
2) Software
64bit Betriebsystem
VS2013 inkl. Windows phone sdk
3) Veröffentlichen:
3a) Screenshot:
Screenshot mittels Phone Emulator in größte Auflösung (WXPA) machen (im Menü beim x), die niedrigeren Auflösungen werden dann beim upload berechnet. Achtung: Ausschalten der Framerate vorher, sollte im Release Build ausgeschalten sein, hat bei mir aber nicht geklappt daher mit #if DEBUG entfernt im App.xaml.cs:
// Show graphics profiling information while debugging.
if (Debugger.IsAttached)
{
// Display the current frame rate counters.
#if DEBUG
Application.Current.Host.Settings.EnableFrameRateCounter = true;
#endif
3b) Icons:
Unter Assets/Tiles alle Default Icons ersetzen durch eigene ...
Tuesday, December 10, 2013
Reporting Services Struktur in Catalog Tabelle
Die Namen der Berichte und Verzeichnisse der SSRS (Sql Server Reporting Services) befinden sich in der ReportServer Datenbank in der Tabelle Catalog.
Names of Reports and Fodlers of SSRS (Sql Server Reporting Services) is in table Catalog of Database ReportServer .
Names of Reports and Fodlers of SSRS (Sql Server Reporting Services) is in table Catalog of Database ReportServer .
Monday, December 09, 2013
Sharepoint Verweisfeld Javascript
Wenn man im Sharepoint ein Verweisfeld mti mehreren Einträgen hat, dann werden die beiden Listen mit folgendem Javascriptcode gefüllt (CallStack):
GipInitializeGroup
GipGetGroupData -- alle Verweise (z.b. "1|ta01|t |t |t2|ta02|t |t |t3|tb01_test123|t |t ")
GipSplit (String mit allen Verweisen, liefert pro Listeneintrag 4 Arrayeinträge zurück: nr,text, " ", " ")
GipGetSelectionData -- bereits selektierte Verweise (z.b..: "1|ta01|t2|ta02")
GipSplit(String nur mit den ausgewählten Elmenten, liefert pro Listeneintrag 2 Arrayelemente zurück: nr, text)
... diverse ifs ...
for schleife zum hinzufügen der currentSelection (derzeit bereits ausgewählte elemente)
GipNewOption() ... fügt bereits ausgewählte in rechte Auswahlliste hinzu
...if ...
GipRefreshGroupCore(master) ... prüft alle Listeneinträge ob schoin ausgewählt wurden und wenn nicht
GipNewOption ... fügt neue Option ins linke Auswahllistenfeld hinzu
GipInitializeGroup
GipGetGroupData -- alle Verweise (z.b. "1|ta01|t |t |t2|ta02|t |t |t3|tb01_test123|t |t ")
GipSplit (String mit allen Verweisen, liefert pro Listeneintrag 4 Arrayeinträge zurück: nr,text, " ", " ")
GipGetSelectionData -- bereits selektierte Verweise (z.b..: "1|ta01|t2|ta02")
GipSplit(String nur mit den ausgewählten Elmenten, liefert pro Listeneintrag 2 Arrayelemente zurück: nr, text)
... diverse ifs ...
for schleife zum hinzufügen der currentSelection (derzeit bereits ausgewählte elemente)
GipNewOption() ... fügt bereits ausgewählte in rechte Auswahlliste hinzu
...if ...
GipRefreshGroupCore(master) ... prüft alle Listeneinträge ob schoin ausgewählt wurden und wenn nicht
GipNewOption ... fügt neue Option ins linke Auswahllistenfeld hinzu
Wednesday, December 04, 2013
Hyper V - keine virtuellen Maschinen mehr sichtbar - no virtueal machines visible
Nach dem Neustart des physikalischen Host waren keine VMs mehr im Hyper V Manger sichtbar - durch den versuchten Import der Virtuellen Maschinen (brach mit Errormeldung ab) und Neustart des Hyper V Managers waren sie wieder sichtbar. Der Name der Virtuellen Maschine steht im properties tag des xml files.
After restarting the physical host, hyper V Manager didn't show any virtual machine. I tried to import them again, got an errormessage, but after restarting HyperV Manager again, the virtual machine I tried to import was visible again.
After restarting the physical host, hyper V Manager didn't show any virtual machine. I tried to import them again, got an errormessage, but after restarting HyperV Manager again, the virtual machine I tried to import was visible again.
Thursday, November 21, 2013
Ora Files (Oracle)
Set TNS_ADMIN="C:\orahome\network" rem Umgebungsvariable TNS_ADMIN zeigt an wo oracle folgende netzwerk config files sucht:
sqlnet.ora ... haupt netzwerk config file, gibt an in welcher reihenfolge folgende files verabeitt werden:
tnsnames.ora ... wie host file, direkt angabe von sid verbindungsinformationen
ldap.ora => ldap server, der auch sid auflöst
Beispiel sqlnet.ora:
# sqlnet.ora Network Configuration File: C:\oracle\11gR2\client\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP, EZCONNECT)
sqlnet.ora ... haupt netzwerk config file, gibt an in welcher reihenfolge folgende files verabeitt werden:
tnsnames.ora ... wie host file, direkt angabe von sid verbindungsinformationen
ldap.ora => ldap server, der auch sid auflöst
Beispiel sqlnet.ora:
# sqlnet.ora Network Configuration File: C:\oracle\11gR2\client\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP, EZCONNECT)
Wednesday, November 20, 2013
Oracle rechte / priviliges
-- which grants has username on tables ? / welche echte hat username auf tabellen ?
select * from user_tab_privs where grantee like 'username';
--generates grant statements for / erzeugt gran statements ü upd,del,ins,sel
select 'grant SELECT, INSERT, UPDATE, DELETE on "ownername"."' || table_name || '" to "username" ;' from user_tables where table_name like 'T_%'
System Privilegs / Rechte
Object privilegs / Rechte
to all tables:
grant select any table, insert any table, delete any table, update any table to myuser;
select * from user_tab_privs where grantee like 'username';
--generates grant statements for / erzeugt gran statements ü upd,del,ins,sel
select 'grant SELECT, INSERT, UPDATE, DELETE on "ownername"."' || table_name || '" to "username" ;' from user_tables where table_name like 'T_%'
System Privilegs / Rechte
select * from user_sys_privs; select * from dba_sys_privs; select * from session_privs;
Object privilegs / Rechte
select * from all_tab_privs; select * from user_tab_privs; select * from dba_tab_privs;
to all tables:
grant select any table, insert any table, delete any table, update any table to myuser;
installing oracle instant client - oracle instant client installieren
1) download insant client basic, unzip, copy files to c:\orahome (or any other name)
2) environment variables: add c:\orahome to path (system, environment variabls) add oracle_home=c:\orahome; tns_admin=c:\orahome\network
3) make dir network in orahome and create file sqlnet.ora example:
# sqlnet.ora Network Configuration File: C:\oracle\11gR2\client\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP, EZCONNECT)
4) create file tnsnames.ora
5) for ldap access create file ldap.ora
DEFAULT_ADMIN_CONTEXT = "dc=subdomain,dc=mydomain,dc=at"
DIRECTORY_SERVERS = (oraoid2.subdomain:389:636,oraoid1.subdomain:389:636,oraoid1.xxx:389:636)
DIRECTORY_SERVER_TYPE = OID
6) test by sqlplus: downloas sqlplus instant client, copy files to c:\orahome and execute at cmd:
sqlplus user@sid
(sid should be defined in ldap or tnsnames)
select table_name from user_tables;
2) environment variables: add c:\orahome to path (system, environment variabls) add oracle_home=c:\orahome; tns_admin=c:\orahome\network
3) make dir network in orahome and create file sqlnet.ora example:
# sqlnet.ora Network Configuration File: C:\oracle\11gR2\client\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, LDAP, EZCONNECT)
4) create file tnsnames.ora
5) for ldap access create file ldap.ora
DEFAULT_ADMIN_CONTEXT = "dc=subdomain,dc=mydomain,dc=at"
DIRECTORY_SERVERS = (oraoid2.subdomain:389:636,oraoid1.subdomain:389:636,oraoid1.xxx:389:636)
DIRECTORY_SERVER_TYPE = OID
6) test by sqlplus: downloas sqlplus instant client, copy files to c:\orahome and execute at cmd:
sqlplus user@sid
(sid should be defined in ldap or tnsnames)
select table_name from user_tables;
Tuesday, November 19, 2013
rename Ms Access Tables / Ms Access Tabellen umbennen
'You have to run th code until all tables are renamd - some changes are not comitted - start again until count=0
'Nicht alle Umbenennungen werden übernommen - solang neustarten, bis alle unbenannt wurden (unbenannt=0)
Function RenTab()
Dim tablename, praefix, newname As String
praefix = "T_PDB_"
Dim anz As Integer: anz = 0
For z = 0 To CurrentDb.TableDefs.Count - 1
tablename = CurrentDb.TableDefs(z).Name
Debug.Print tablename;
If (Left(tablename, Len(praefix)) = praefix) Then
Else
If (Left(tablename, 4) <> "MSys") Then
newname = praefix & tablename
Debug.Print " ->" & newname;
anz = anz + 1
CurrentDb.TableDefs(z).Name = newname
End If
End If
Debug.Print 'carige return
Next z
Debug.Print
Debug.Print "umbenannt:" & anz
End Function
Function UnRenTab()
Dim tablename, praefix, newname As String
Dim anz As Integer: anz = 0
praefix = "T_PDB_"
For z = 0 To CurrentDb.TableDefs.Count - 1
tablename = CurrentDb.TableDefs(z).Name
Debug.Print tablename;
If (Left(tablename, Len(praefix)) = praefix) Then
newname = Mid(tablename, Len(praefix) + 1)
Debug.Print " ->" & newname;
anz = anz + 1
CurrentDb.TableDefs(z).Name = newname
End If
Debug.Print 'carige return
Next z
Debug.Print
Debug.Print "umbenannt:" & anz
End Function
'Nicht alle Umbenennungen werden übernommen - solang neustarten, bis alle unbenannt wurden (unbenannt=0)
Function RenTab()
Dim tablename, praefix, newname As String
praefix = "T_PDB_"
Dim anz As Integer: anz = 0
For z = 0 To CurrentDb.TableDefs.Count - 1
tablename = CurrentDb.TableDefs(z).Name
Debug.Print tablename;
If (Left(tablename, Len(praefix)) = praefix) Then
Else
If (Left(tablename, 4) <> "MSys") Then
newname = praefix & tablename
Debug.Print " ->" & newname;
anz = anz + 1
CurrentDb.TableDefs(z).Name = newname
End If
End If
Debug.Print 'carige return
Next z
Debug.Print
Debug.Print "umbenannt:" & anz
End Function
Function UnRenTab()
Dim tablename, praefix, newname As String
Dim anz As Integer: anz = 0
praefix = "T_PDB_"
For z = 0 To CurrentDb.TableDefs.Count - 1
tablename = CurrentDb.TableDefs(z).Name
Debug.Print tablename;
If (Left(tablename, Len(praefix)) = praefix) Then
newname = Mid(tablename, Len(praefix) + 1)
Debug.Print " ->" & newname;
anz = anz + 1
CurrentDb.TableDefs(z).Name = newname
End If
Debug.Print 'carige return
Next z
Debug.Print
Debug.Print "umbenannt:" & anz
End Function
Friday, November 15, 2013
todo
neune, nicht gechachten Ausführungsplan:
OPTION (OPTIMIZE FOR UNKNOWN)
Ausführungsplan Cache leeren:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Stored Procedure ausführen als:
Execute as
--server umbenennen
select * from sys.servers
select * from sys.servers where server_id=0
@@servername
sp_dropserver
sp_addserver 'hostname\ionstancename', 'local'
--Log für ... nicht vorhanden: offline / Online
OPTION (OPTIMIZE FOR UNKNOWN)
Ausführungsplan Cache leeren:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Stored Procedure ausführen als:
Execute as
--server umbenennen
select * from sys.servers
select * from sys.servers where server_id=0
@@servername
sp_dropserver
sp_addserver 'hostname\ionstancename', 'local'
--Log für ... nicht vorhanden: offline / Online
Thursday, November 14, 2013
Service Unavailable (IIS 6.0 Windows Server 2003)
kann auf Sicherheitsprobleme hinweisen, wenn die Website läuft ... Abhilfe: Konto mit entsprechenden Berechtigungen im AppPool einstellen und neu starten (iisreset)
Wednesday, November 13, 2013
sql server health (gesundheits) check
1) Arbeitsspeicher: maximal Grenze (physikalischer gesamtspeicher-2GB fürs betreibssystem) sonst wird der sqlserver prozess eventuell ausgepaged (ab 2005 meldung im log wenn ausgepaged)
2) Autogrow: keine zu kleinen Einheiten, 32 oder 64MB , besser: eine große Datei, die nicht fragmentiert ist, also vor dem Anlegen checken ob ein so großer zusammenhängender Platz auf der HD verfügbar, ebenso bei vergrößerung mit großen Zusammenhängenden Dateien vergrößern; mit dbcc loginfo logfile chekcen: sollte 50-100 Virtuelle Logfiles enthalten, bei autogrow 64MB werden 4 virtuelle Logfiles erzeugt, bei mehr 8
3) Shrink: niemals Datenfiles Shrinken - fragmentiert Indizies, und rebuild braucht dann wieder den Speicher; beim Logfile Shrinken auf die LogBackupChain achten
---------------------
1) set sql server max. ram to max physical ram-2gb for OS
2) Autogrow: grow by mind 64MB, better one big file not fragmented, every Autogrow creates a new fragment; look at logfile with dbcc loginfo to check count of virtual logfiles should be 50-100
3) Shrink: never shrink datafiles because index are fragmented, watch log file backup chain when shrinking logfile
2) Autogrow: keine zu kleinen Einheiten, 32 oder 64MB , besser: eine große Datei, die nicht fragmentiert ist, also vor dem Anlegen checken ob ein so großer zusammenhängender Platz auf der HD verfügbar, ebenso bei vergrößerung mit großen Zusammenhängenden Dateien vergrößern; mit dbcc loginfo logfile chekcen: sollte 50-100 Virtuelle Logfiles enthalten, bei autogrow 64MB werden 4 virtuelle Logfiles erzeugt, bei mehr 8
3) Shrink: niemals Datenfiles Shrinken - fragmentiert Indizies, und rebuild braucht dann wieder den Speicher; beim Logfile Shrinken auf die LogBackupChain achten
---------------------
1) set sql server max. ram to max physical ram-2gb for OS
2) Autogrow: grow by mind 64MB, better one big file not fragmented, every Autogrow creates a new fragment; look at logfile with dbcc loginfo to check count of virtual logfiles should be 50-100
3) Shrink: never shrink datafiles because index are fragmented, watch log file backup chain when shrinking logfile
Thursday, November 07, 2013
Remote desktop - "The Local Security Authority cannot be contacted"
I got error "The Local Security Authority cannot be contacted" by logging in via remotedesktop - console worked fine - after I moved a hyperv windows 7 machine from on host to another.
I rmeoved the machine from the domain and inserted it agian and it worked fine again.
Nachdem ich eine HyperV Machsine von einem Host zu einem anderen verschoben habe, erhielt ich bei login durch rremote desktop den Fehler "The Local Security Authority cannot be contacted" - über die Hyper V Console konnte ich mich ganz normal anmelden. Herausnehmen und wieder hinzufügen zur Domäne löste das Problem.
I rmeoved the machine from the domain and inserted it agian and it worked fine again.
Nachdem ich eine HyperV Machsine von einem Host zu einem anderen verschoben habe, erhielt ich bei login durch rremote desktop den Fehler "The Local Security Authority cannot be contacted" - über die Hyper V Console konnte ich mich ganz normal anmelden. Herausnehmen und wieder hinzufügen zur Domäne löste das Problem.
Wednesday, November 06, 2013
enabling Remote Desktop by Group Policy / Remotedesktop mittels Group Policy zulassen
Computer Configuration, Administrative Templates, Windows COmponents, Terminaldienste Remotevebindung für Benutzer mit Hilfe der Terminaldienste zulassen
und zusätzlich Remotedesktop durch die Windows Firewall durchlassen
additionally allow remotedesktop through firewall
Computer Configuration, Administrative Templates, Network, Network Connections, and then Windows Firewall / Domain / Remotedesktopausnahme
und zusätzlich Remotedesktop durch die Windows Firewall durchlassen
additionally allow remotedesktop through firewall
Computer Configuration, Administrative Templates, Network, Network Connections, and then Windows Firewall / Domain / Remotedesktopausnahme
Tuesday, November 05, 2013
concating columns and strings in oracle to generate drop table statements / Strings und Spalten in Oracle verbinden um drop Table Statements zu generieren
select 'Drop table ' || table_name || ';' from user_tables where table_name like 'mytablestoDelete%';
Monday, November 04, 2013
oracle: kill connections (user sessions) - Verbindungen beenden
select
sid --wird benötigt
zum löschen
,serial# --wird benötigt
zum löschen
,username --loginname
,osuser --windows
loginname
,machine --host auf dem
session gestartet wurde
,program --applikation
,status --eh kloa
from v$session
WHERE USERNAME = 'username';
|
…und damit dann die Sessions
löschen:
--ALTER SYSTEM KILL SESSION 'sid,serial#';
|
sql server: connect users to logins / User mit Logins verbinden
sql server hat ein 2 stufiges SIcherheitsmodell: Der SqlServer selbst verwaltet Rechte für logins, jede Datenbank am SqlServer hat dann db users, die mit den logins verbunden sind, oder auch nicht. z.b. nach einem Restore. UNverbundene (verwaiste) Users können wie folgt gelistet werden:
--This will lists the orphaned users:
EXEC sp_change_users_login 'Report'
Im ssms können Logins Datenbanken zugeorndet werden, dann wird in der Datenbank ein entsprechender User mit dem selben Namen des logins erstellt. Wenn Login und Datenbankbenutzer bereits vorhanden sind können sie wie folgt verbunden werden:
--If you already have a login id and password for this user, fix it by doing:
EXEC sp_change_users_login 'Auto_Fix', 'user'
EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'
Wenn noch kein login existiert, kann dieses über SSMS oder wie folgt erstellt werden:
--If you want to create a new login id and password for this user, fix it by doing:
--creates login EXEC sp_change_users_login 'Auto_Fix', 'dbUser',NULL,'pwd'
for searching:
EXEC SP CHANGE USER LOGIN
EXEC SP CHANGE USERS LOGIN
--This will lists the orphaned users:
EXEC sp_change_users_login 'Report'
Im ssms können Logins Datenbanken zugeorndet werden, dann wird in der Datenbank ein entsprechender User mit dem selben Namen des logins erstellt. Wenn Login und Datenbankbenutzer bereits vorhanden sind können sie wie folgt verbunden werden:
--If you already have a login id and password for this user, fix it by doing:
EXEC sp_change_users_login 'Auto_Fix', 'user'
EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'
Wenn noch kein login existiert, kann dieses über SSMS oder wie folgt erstellt werden:
--If you want to create a new login id and password for this user, fix it by doing:
--creates login EXEC sp_change_users_login 'Auto_Fix', 'dbUser',NULL,'pwd'
for searching:
EXEC SP CHANGE USER LOGIN
EXEC SP CHANGE USERS LOGIN
Thursday, October 31, 2013
The Database could not be exclusively locked to perform the operation (Microsoft SQL Server, Error: 5030)
Unable to rename .... (Object Explorer)
Rename failed for Database ... (Microsoft.SqlServer.Smo)
An exception occurred while executing a Transact-SQL statement batch. (Microsoft.SqlServer.ConnectionInfo)
The Database could not be exclusively locked to perform the operation (Microsoft SQL Server, Error: 5030)
Most likly reason: open connections
Ursache: offene Verbindungen zur Datenbank
solution: kill all processes to the database (or let the users quit them) by right click on the server in ssms (Sql Server Management Studio), Activity Monitor, Processes: Filter Database and right Klick to kill all Processes
Lösung: beenden aller Verbindungen zur Datenbank - entweder durch die User oder als sysadmin mittels rechts Klick auf den Server im ssms (Sql Server Management Studio), Activity Monitor auswählen, bei Processen nach der gewünschten Datenbank filtern und alle Processe durch recht click killen.
Rename failed for Database ... (Microsoft.SqlServer.Smo)
An exception occurred while executing a Transact-SQL statement batch. (Microsoft.SqlServer.ConnectionInfo)
The Database could not be exclusively locked to perform the operation (Microsoft SQL Server, Error: 5030)
Most likly reason: open connections
Ursache: offene Verbindungen zur Datenbank
solution: kill all processes to the database (or let the users quit them) by right click on the server in ssms (Sql Server Management Studio), Activity Monitor, Processes: Filter Database and right Klick to kill all Processes
Lösung: beenden aller Verbindungen zur Datenbank - entweder durch die User oder als sysadmin mittels rechts Klick auf den Server im ssms (Sql Server Management Studio), Activity Monitor auswählen, bei Processen nach der gewünschten Datenbank filtern und alle Processe durch recht click killen.
Sharepoint Verweisfeld Einträge mit Javascript manipulieren
Bei einem Verweisfeld auf eine großen Liste kann es bim IE (Internet Explorer) lange dauern, bis das Verweisfeld befüllt ist. Dies wird in der Javascript Funktion GipRefreshGroupCore gemacht - hier die Implementierung im Sharepoint 2010:
function GipRefreshGroupCore(a)
{
ULSEeZ:;
if (a.data.length==0) return;
var b=0;
if (a.groupControl) b=a.groupControl.selectedIndex;
for (var d=0,c=1;c {
for (var f=false,e=0;e if (a.data[b][c][0]==a.resultControl[e].value) f=true;
if(!f)
{
a.candidateControl.options[d]=GipNewOption(a.data[b][c][1],a.data[b][c][0]);
d++
}
}
a.candidateControl.length=d;
if(a.candidateControl.options.length>0)
{
a.candidateControl.options[0].selected=true;
a.addControl.disabled=false;
GipDisplayDescription(a)
}
else
{
a.addControl.disabled=true;
GipSetDescriptionText(a," ")
}
}
man kann diese Überschreiben, indem man auf der Bearbeitungsseite (mit Shift öffnen, damit kein Popup) ein Inhalts Editor Webpart mit folgendem Code einfügt:
nun wird das Verweisfeld nciht befüllt, und stattdessen die MSgBox test angezeigt.
indem man den original Code erweitert kann man z.b. die zur verfügung stehenden Verweise filtern.
function GipRefreshGroupCore(a)
{
ULSEeZ:;
if (a.data.length==0) return;
var b=0;
if (a.groupControl) b=a.groupControl.selectedIndex;
for (var d=0,c=1;c {
for (var f=false,e=0;e if (a.data[b][c][0]==a.resultControl[e].value) f=true;
if(!f)
{
a.candidateControl.options[d]=GipNewOption(a.data[b][c][1],a.data[b][c][0]);
d++
}
}
a.candidateControl.length=d;
if(a.candidateControl.options.length>0)
{
a.candidateControl.options[0].selected=true;
a.addControl.disabled=false;
GipDisplayDescription(a)
}
else
{
a.addControl.disabled=true;
GipSetDescriptionText(a," ")
}
}
man kann diese Überschreiben, indem man auf der Bearbeitungsseite (mit Shift öffnen, damit kein Popup) ein Inhalts Editor Webpart mit folgendem Code einfügt:
nun wird das Verweisfeld nciht befüllt, und stattdessen die MSgBox test angezeigt.
indem man den original Code erweitert kann man z.b. die zur verfügung stehenden Verweise filtern.
Wednesday, October 30, 2013
simple Collation Example / einfaches Sortierungs Beispiel SQL Server
Je nach verwendeter Sprache sollte eine entsprechende Sortierungsreihenfolge verwendet werden:
For every Language there should be used the correct collation:
select * from table1 order by name collate Latin1_General_BIN
select * from table1 order by name collate Latin1_General_CS_AS --CS=CaseSensitiv
select * from table1 order by name collate Latin1_General_CI_AS --CI=CaseInsensitiv
Der SqlServer sowie jede Datenbank und Tabelle besitzen eine Deffault Collation (in Properties des SSMS Sql Server MAnagement Studio)
SqlServer, every Database and every Table have a default collation
Änderung der Sortierung einer Tabelle / change table default collation
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)COLLATE Latin1_General_CS_AS
COlaltions:
http://technet.microsoft.com/en-us/library/ms180175.aspx
For every Language there should be used the correct collation:
select * from table1 order by name collate Latin1_General_BIN
select * from table1 order by name collate Latin1_General_CS_AS --CS=CaseSensitiv
select * from table1 order by name collate Latin1_General_CI_AS --CI=CaseInsensitiv
Der SqlServer sowie jede Datenbank und Tabelle besitzen eine Deffault Collation (in Properties des SSMS Sql Server MAnagement Studio)
SqlServer, every Database and every Table have a default collation
Änderung der Sortierung einer Tabelle / change table default collation
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)COLLATE Latin1_General_CS_AS
COlaltions:
http://technet.microsoft.com/en-us/library/ms180175.aspx
sql server drop foreign keys / Fremdschluessel loeschen
wenn man tabellen löschen will, erhält man oft die meldung:
cannot ... because it is being referenced by a FOREIGN KEY constraint
hier ein select zum generieren von alter table statements um alle foreign keys der datenbank zu löschen:
select 'alter table ['+t.name + '] drop constraint ['+k.name +']' as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
wenn man nur daten im "bulk modus" (also ganze tabellen kopieren) einfügen will, genügt es vorübergehend die constraints zu disabeln:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
und dann wieder einzuschalten:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
when droping tables or deleting rows you often get:
cannot ... because it is being referenced by a FOREIGN KEY constraint
this select generates alter table statements to delete all foreign key in a database:
select 'alter table ['+t.name + '] drop constraint '+k.name as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
if you just want to copy tables, its enough to disable constraints:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
and after coping data enable again:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
cannot ... because it is being referenced by a FOREIGN KEY constraint
hier ein select zum generieren von alter table statements um alle foreign keys der datenbank zu löschen:
select 'alter table ['+t.name + '] drop constraint ['+k.name +']' as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
wenn man nur daten im "bulk modus" (also ganze tabellen kopieren) einfügen will, genügt es vorübergehend die constraints zu disabeln:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
und dann wieder einzuschalten:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
when droping tables or deleting rows you often get:
cannot ... because it is being referenced by a FOREIGN KEY constraint
this select generates alter table statements to delete all foreign key in a database:
select 'alter table ['+t.name + '] drop constraint '+k.name as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
if you just want to copy tables, its enough to disable constraints:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
and after coping data enable again:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Tuesday, October 29, 2013
simple / einfaches Javascript in / im Sharepoint
ein Javascript kann man z.b. mittels Inhalts-Editor-Webpart in eine Sharepoint Site integrieren:
Sp2007: Website Aktionen, Seite Bearbeiten, Webpart hinzufügen, Inhalts-Editor-Webpart, bearbeiten, freigegebenes Webpart bearbeiten, Quelltext Editor:
<script language="javascript" type="text/javascript">
alert("test1!");
<script>
a javascript can be added to sharepoint by adding a content editor webpart:
sp2007: website action, edit site , add webpart, content editor webpart, edit, source:
Sp2007: Website Aktionen, Seite Bearbeiten, Webpart hinzufügen, Inhalts-Editor-Webpart, bearbeiten, freigegebenes Webpart bearbeiten, Quelltext Editor:
<script language="javascript" type="text/javascript">
alert("test1!");
<script>
a javascript can be added to sharepoint by adding a content editor webpart:
sp2007: website action, edit site , add webpart, content editor webpart, edit, source:
Dir commando (aus CMD Shell) Listformat / Listenformat
Änderungsdatum, Änderungszeitpunkt, Art, Größe, Name
Changedate,ChangeTime, Kind, Size, Name
Changedate,ChangeTime, Kind, Size, Name
spaltenreihenfolge ändern sharepoint 2007 change column order
In Listeneinstellungen unter Inhaltstypen auf Link Element klicken, dann ganz runterscrollen und Link Spaltenreihenfolge klicken
how to get Sharepoid List Guid - wie bekomme ich die Guid einer sharepoint lsite
Die Guid einer Sharepoint Liste steht in der Url der Eigenschaftsseite der Liste: http:// ..... _layouts/listedit.aspx?List=%7BD2EAF407%2D4D38%2D5D39%2DA411%2D1434E8C5C096%7D
die URL codierten Zeichen müssen dabei wieder umgewandelt werden:
%7B geschwungene Klammer links
%2D Bindestrich
%7D geschwungene Klammer rechts
Bei Sharepoint 2007 in der Listenansicht auf Einstellungen/Einstellungen für Liste drücken, bei Sharepoint 2010 auf Listentools/Liste und dann im Ribbon auf Listeneinstellungen gehen.
you can see the Listguid in the URL of the list properties:
http:// ..... _layouts/listedit.aspx?List=%7BD2EAF407%2D4D38%2D5D39%2DA411%2D1434E8C5C096%7D
th url contains encoded:
%7B brace left
%2D hyphen
%7D brace right
die URL codierten Zeichen müssen dabei wieder umgewandelt werden:
%7B geschwungene Klammer links
%2D Bindestrich
%7D geschwungene Klammer rechts
Bei Sharepoint 2007 in der Listenansicht auf Einstellungen/Einstellungen für Liste drücken, bei Sharepoint 2010 auf Listentools/Liste und dann im Ribbon auf Listeneinstellungen gehen.
you can see the Listguid in the URL of the list properties:
http:// ..... _layouts/listedit.aspx?List=%7BD2EAF407%2D4D38%2D5D39%2DA411%2D1434E8C5C096%7D
th url contains encoded:
%7B brace left
%2D hyphen
%7D brace right
Monday, October 28, 2013
Berechtigungen für SQL Server Agent / rights for Sql Server Agent
Um den Sql Server Agent im SSMS eingeblendet zu bekommen, muß der User in der MSDb Datenbank zur Rolle SqlServerAgentOperater hinzugefügt werden.
For seing SqlServerAgent in SSMS a user has to be in role SqlServerAgentUser of msdb database.
For seing SqlServerAgent in SSMS a user has to be in role SqlServerAgentUser of msdb database.
Simple Add New ADODB Record to Access Table (VBA) example / einfaches Beispiel Hinzufügen ADODB Record zu Access Tabelle (VBA)
Function AddNewRec(dest As String)
'? AddNewRec("test")
'newway:
Dim r As New ADODB.Recordset: r.Open dest, CurrentProject.connection, adOpenDynamic, adLockOptimistic
'Oldway (.Mdb files) - does not work with accdb backend)
'Dim r As Recordset: Set r = CurrentDb.OpenRecordset(dest)
r.AddNew
r.Fields("Id") = "1"
r.Fields("name") = "test"
r.Update
r.Close
End Function
'? AddNewRec("test")
'newway:
Dim r As New ADODB.Recordset: r.Open dest, CurrentProject.connection, adOpenDynamic, adLockOptimistic
'Oldway (.Mdb files) - does not work with accdb backend)
'Dim r As Recordset: Set r = CurrentDb.OpenRecordset(dest)
r.AddNew
r.Fields("Id") = "1"
r.Fields("name") = "test"
r.Update
r.Close
End Function
Saturday, October 26, 2013
compare Windows 8 Phone - Andronoid 2.36 Vergleich
Feature | Windows 8 | Andonoid 2.3.6 | |
---|---|---|---|
Tastatur | bessere Vorschläge aber umständlicher als swipe, Palm Schriftzugerkennung war besser, Sonderzeichen scher zu finden | swipe tastatur ermöglicht rascheres schreiben | |
einfacher zu bedienen und zu kategorisieren | GMail: umständliches zuweisen von Labels | ||
www Browser | inkompatibler: manche videos lassen sich nicht abspielen | kompatibler, besonders bei videos | |
Audio/Music | keine Möglichkeit gefunden, einzelne Folder der SD Card abzuspielen, nur Gesamtverzeichnis aller Musikdateien auf dem Gerät nach Künstler, Album, Songtitel | Folder Player App ermöglicht abspielen einzelner Folder auf der SD Card | |
Internet Verbindung teilen | nur über WLAN möglich | auch USB Thethering möglich | |
Tuesday, October 22, 2013
my sql basiscs / mysql Grundlagen
# kommentar / comment
# immer mit ; abschließen, sonst können keine Teilabfragen ausgeführt werden
select * from mytable limt 100; # gibt max 100 Sätze zurück / max 100 Records returned
select @@version; #version von mysql anzeigen
curdate() # aktuelles Datum
show status; # alle variablen / all variables
show processlist;
show open tables;
show engine innodb status; # benötig superuserrechte / requires superuser rights
SqlServer2008 - SqlCompact MergeReplikation
Um eine Db eines SQL Servers 2008/2005 zu replizieren ist es wichtig sich mit dem Rechnernamen, nicht mit der IP anzumelden, sonst glaub ssms dass die Replikation nicht installeirt ist.
Anschließend:
1) neue Publikation unter Server
2) neue Subscription
wichtig: bei den Properties der Publikation das Verfallsdatum (expire) von Subscription richtig konfigurieren, sonst verfallen diese bei seltener Merge Replikation (Standard 14 Tage)
Anschließend:
1) neue Publikation unter Server
2) neue Subscription
wichtig: bei den Properties der Publikation das Verfallsdatum (expire) von Subscription richtig konfigurieren, sonst verfallen diese bei seltener Merge Replikation (Standard 14 Tage)
Reporting Services Email Abonnement
Vorraussetzungen:
1) Ein Email Account muss in Reporting Services Configuration definiert sein
2) Ausführungs Account sollte definiert sein
Abonnement hinzufügen:
Über http://Reportserver/Reports zum Bericht navigieren, unter Eigenschaften, Abonnements neues Abonnement auswählen
1) Ein Email Account muss in Reporting Services Configuration definiert sein
2) Ausführungs Account sollte definiert sein
Abonnement hinzufügen:
Über http://Reportserver/Reports zum Bericht navigieren, unter Eigenschaften, Abonnements neues Abonnement auswählen
Monday, October 21, 2013
reporting services anwendungskonto ändern / change reporting services user
Reporting Services Übersicht:
Reportmanager (bsp.: http://localhost/Reports) Webanwendung greift auf
Reportserver (bsp.: http://localhost/Reportserver) Webanwendung zu, diese auf
Sql Server Reporting Services Windows Service zu, dieses geht dann mit dem unter Berichtserverkonfig/SetupDatenbank definierten Konto auf die Reportserver Datenbank,
diese ist mit einem Schlüssel verschlüsselt, den sollte man sichern um im folgenden Fehlerfall wiederherstellen zu können:
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);
}
}
Subscribe to:
Posts (Atom)