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.

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.

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

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"

Tuesday, October 29, 2013

html escaping / klammern und ampersand

& &
< <
> >
/ ⁄

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:

Dir commando (aus CMD Shell) Listformat / Listenformat

Änderungsdatum, Änderungszeitpunkt, Art, Größe, 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

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.

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

Saturday, October 26, 2013

compare Windows 8 Phone - Andronoid 2.36 Vergleich


FeatureWindows 8Andonoid 2.3.6
Tastaturbessere Vorschläge aber umständlicher als swipe, Palm Schriftzugerkennung war besser, Sonderzeichen scher zu findenswipe tastatur ermöglicht rascheres schreiben
Maileinfacher zu bedienen und zu kategorisierenGMail: umständliches zuweisen von Labels
www Browserinkompatibler: manche videos lassen sich nicht abspielenkompatibler, besonders bei videos
Audio/Musickeine Möglichkeit gefunden, einzelne Folder der SD Card abzuspielen, nur Gesamtverzeichnis aller Musikdateien auf dem Gerät nach Künstler, Album, SongtitelFolder Player App ermöglicht abspielen einzelner Folder auf der SD Card
Internet Verbindung teilennur ü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)

Reporting Services Email Abonnement

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

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

Monday, October 21, 2013

reporting services anwendungskonto ändern / change reporting services user

Reporting Services Übersicht:

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


Wednesday, October 16, 2013

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

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

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

Vl Build, Debug / Checked Build

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

sql server dynamic managment objects (views) categories / Kategorien

dm_exec_
dm_os_
dm_tran_
dm_io_
dm_db_

Tuesday, October 15, 2013

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

sid.bat:

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

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

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

expdp / impdp example

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

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

Windows Server 2008 Service Pack 2: IIS AppPool\DefaultAppPool

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

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

l

Saturday, October 12, 2013

winform localization problem / Windows Forms Lokalisierungs Problem

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

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

Thursday, October 10, 2013

VBA Write to Textfile - VBA in Text File schreiben


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

Friday, October 04, 2013

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

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

USE [test]
GO

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

SET QUOTED_IDENTIFIER ON
GO

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

GO

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

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

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

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

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

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


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

Wednesday, October 02, 2013

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

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

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

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



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


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


d:
cd D:\sqldata

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